Ground Check
Tipo: Acción (rama)
Categoría: RAYCAST
Lanza un rayo hacia abajo desde el objeto para comprobar si está apoyado en el suelo. Diseñado para controladores de personaje y plataformeros.
Propiedades
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
| Max Distance | Float | 1.1 |
Hasta dónde bajar el rayo desde el origen |
| Origin Offset Z | Float | 0.0 |
Desplazamiento vertical del punto de inicio del rayo |
| Prop Filter | String | "" |
Solo detecta objetos con esta propiedad BGE |
Sockets
| Socket | Dirección | Tipo |
|---|---|---|
| In | Entrada | Exec |
| Grounded | Salida | Exec |
| Airborne | Salida | Exec |
Código generado
_gc_orig = self.own.worldPosition.copy()
_gc_orig.z += 0.0
_gc_to = _gc_orig.copy()
_gc_to.z -= 1.1
_gc_res = self.own.rayCast(_gc_to, _gc_orig, 1.1, '', 0, 0, 0)
self._ground_hit = _gc_res[0]
self._ground_pos = list(_gc_res[1]) if _gc_res[1] else [0.0, 0.0, 0.0]
self._ground_nrm = list(_gc_res[2]) if _gc_res[2] else [0.0, 0.0, 1.0]
self._ground_dist = ((_gc_res[1] - _gc_orig).length if _gc_res[1] else 1.1)
if _gc_res[0] is not None:
# rama Grounded
else:
# rama Airborne
Uso típico
Control de salto (solo saltar en suelo)
[On Key Press: Key=SPACE, Mode=PRESSED]
→ [Ground Check: Max Distance=1.1]
└── Grounded ──► [Apply Force: Z=5.0, Local=False]
└── Airborne ──► [...] # ignorar
Animación de estado (correr / caer)
[On Update]
→ [Ground Check: Max Distance=1.2]
└── Grounded ──► [Play Action: Action="run_anim"]
└── Airborne ──► [Play Action: Action="fall_anim"]
Leer la distancia al suelo en un script
# Disponible como self._ground_dist después de ejecutar Ground Check
dist_to_ground = self._ground_dist
Notas
- El resultado queda en
self._ground_hit,self._ground_pos,self._ground_nrm,self._ground_dist. - Ajusta
Origin Offset Zsi el pivote del objeto no está en su base (p. ej. personaje con pivote en el centro). - Para suelos con ciertas propiedades usa
Prop Filter="ground"y añade esa propiedad en el editor de objeto.