Mouse Raycast
Tipo: Rama (Hit / Miss)
Categoría: MOUSE
Lanza un rayo desde la cámara activa a través de la posición del cursor. Expone el objeto golpeado, la posición de impacto y la normal de la superficie.
Propiedades
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
| Ray ID | String | "mouse" |
Identificador para acceder a los resultados después |
| Distance | Float | 100.0 |
Distancia máxima del rayo |
| Prop Filter | String | "" |
Solo detecta objetos con esta propiedad BGE |
Sockets
| Socket | Dirección | Tipo |
|---|---|---|
| In | Entrada | Exec |
| Hit | Salida | Exec (impacto detectado) |
| Miss | Salida | Exec (sin impacto) |
| Object | Salida | Dato (objeto golpeado) |
| Position | Salida | Dato (Vector posición de impacto) |
| Normal | Salida | Dato (Vector normal de superficie) |
Código generado
_mrc_cam = scene.active_camera
_mrc_hit, _mrc_pos, _mrc_nrm = _mrc_cam.getScreenRay(
Range.logic.mouse.position[0],
Range.logic.mouse.position[1],
100.0,
''
) or (None, None, None)
self._rc_mouse_hit = _mrc_hit
self._rc_mouse_pos = _mrc_pos
self._rc_mouse_nrm = _mrc_nrm
if _mrc_hit:
#HIT_PATH#
else:
#MISS_PATH#
Uso típico
Instanciar objeto en punto de click
[On Update] → [Mouse Button: Button=Left, Mode=activated]
└── True ──► [Mouse Raycast: Ray ID="place"]
└── Hit ──► [Add Object:
Object = "building"
Position = {Position socket}]
Apuntar arma hacia el cursor
[On Update] → [Mouse Raycast: Ray ID="aim"]
└── Hit ──► [BTCustomTask:
target = {Position socket}
# orientar arma hacia target...]
Notas
- Los resultados se almacenan en
self._rc_<ray_id>_hit/pos/nrmpara acceso desde Raycast Result si se necesita más tarde. getScreenRaydevuelve una tupla(object, position, normal)o(None, None, None)sin impacto.