Resultados 1 al 2 de 2

Raycastto Python BGE

  1. #1
    Fecha de ingreso
    Jul 2015
    Mensajes
    465

    Blender Raycastto python BGE

    Buenas, este método está presente en todos los objetos del juego. El objeto que lo llama lanza un rayo hacia otro objeto o punto del espacio dado y nos devuelve.

    El primer objeto que es interceptado por este rayo, la Api dice: raycastto (other, Dist, prop)
    Other: el objeto hacia el que se dirige el rayo.

    Dist: máxima distancia para buscar(si no ponemos nada, la distancia es hasta el objeto (other))
    Prop: buscará el objeto (other) y la propiedad definida.

    Solo es obligatorio el objeto hacia el que se lanza el rayo, Dist y prop es opcional.

    -- IMÁGENES ADJUNTAS --
    Archivos adjuntados Archivos adjuntados

  2. #2
    Fecha de ingreso
    Dec 2025
    Mensajes
    0
    El método raycastto en Blender Game Engine (BGE) está obsoleto porque BGE fue descontinuado. La solución actual es usar Blender con su motor de renderizado Eevee o Cycles, y para lógica de juego se debe utilizar UPBGE, Godot o Unity.

    UPBGE es un fork que mantiene vivo el motor de juego de Blender. Si trabajas en UPBGE, el método equivalente y moderno es ray_cast. Su uso es diferente. Necesitas un punto de origen, una dirección y una distancia. La sintaxis básica es: resultado, objeto, punto, normal = propietario.ray_cast(origen, dirección, distancia). Primero debes calcular la dirección restando la posición del objetivo a la posición de origen y normalizando el vector.

    Para lanzar un rayo desde el objeto actual hacia la posición de otro objeto, el código en UPBGE sería similar a este. Primero importas el módulo mathutils para operaciones con vectores. Luego defines el origen, que suele ser la posición del objeto que lanza el rayo. Después calculas la dirección restando el vector de posición del objetivo al vector de origen y lo normalizas. Finalmente llamas al método ray_cast.

    Aquí tienes un ejemplo concreto. Asume que este script está en el objeto que lanza el rayo y que hay otro objeto llamado "Objetivo" en la escena.

    from bge import logic
    import mathutils

    cont = logic.getCurrentController()
    propietario = cont.owner

    objetivo = logic.getCurrentScene().objects["Objetivo"]

    origen = propietario.worldPosition
    dir_vector = objetivo.worldPosition - origen
    distancia = dir_vector.length
    direccion = dir_vector.normalized()

    resultado, objeto, punto, normal = propietario.ray_cast(origen, origen + (direccion * distancia))

    if resultado:
    print("Golpeado:", objeto.name)
    else:
    print("No hubo impacto")

    Recuerda que UPBGE es la herramienta actual para este tipo de desarrollo. Si empiezas un proyecto nuevo, considera Godot por su simplicidad y documentación excelente.

Temas similares

  1. Playaction python BGE
    Por Juani en el foro Plugins y Scripts
    Respuestas: 1
    : 04-01-2026, 13:24
  2. Replacemesh python BGE
    Por Juani en el foro Plugins y Scripts
    Respuestas: 1
    : 04-01-2026, 13:24
  3. Blender ¿Dónde encontrar la lista completa de funciones de Python para Blender?
    Por adrifre7 en el foro Plugins y Scripts
    Respuestas: 2
    : 30-01-2009, 10:01
  4. 3ds Max Python en 3ds Max
    Por taidan en el foro Plugins y Scripts
    Respuestas: 1
    : 03-06-2008, 11:39
  5. Respuestas: 2
    : 24-03-2006, 10:46