Distance Check
Tipo: Branch (Near / Far)
Categoría: AI
Mide la distancia entre el objeto propietario y un objetivo de escena, y bifurca la ejecución. Además expone la distancia calculada en la variable local _ai_dist para que otros nodos puedan leerla.
Propiedades
| Propiedad | Tipo | Por defecto | Descripción |
|---|---|---|---|
| Target | Enum | (objetos de escena) | Objeto de referencia |
| Threshold | Float (≥0.01) | 5.0 |
Distancia límite para separar Near/Far |
Sockets
| Socket | Dirección | Tipo |
|---|---|---|
| In | Entrada | Exec |
| Near | Salida | Exec (distancia ≤ threshold) |
| Far | Salida | Exec (distancia > threshold) |
| Distance | Salida | Data (float) |
Comportamiento
Cada frame:
- Busca el objeto Target en la escena.
- Si existe: calcula distancia 3D a
worldPosition. - Si no existe: distancia = 9999.
- Si
distancia ≤ threshold→ ejecutaNear. - Si
distancia > threshold→ ejecutaFar.
La variable local _ai_dist queda disponible en el código generado para los nodos que se ejecuten después.
Uso típico
Bifurcación de comportamiento por distancia
[Distance Check: Player, Threshold=10.0]
├── Near ──► [Seek: Player]
└── Far ──► [Patrol]
Zona de ataque
[Distance Check: Player, Threshold=2.0]
├── Near ──► [BT Custom Task: attack]
└── Far ──► [Seek: Player]
Encadenado con Line Of Sight
[Distance Check: Player, Threshold=15.0]
├── Near ──► [Line Of Sight: Player]
│ ├── Visible ──► [Seek: Player]
│ └── Hidden ──► [Wander]
└── Far ──► [Patrol]
Notas
- La distancia se calcula en 3D (incluye diferencia de altura). Si quieres solo XY, usa un BTCustomTask manual.
- El socket
Distancees de tipo Data — conectarlo a otro nodo de dato que lo lea. No es un valor publicado en la escena. - Si el Target no está en escena, el nodo siempre elige
Far(distancia = 9999). - Distance Check no actualiza ninguna variable
ai_*. Para el sistema modular, usa Enemy Perception que publicaai_dist.