Navegación
NavMesh: agentes que buscan el camino.
Como en Unreal: crea un Volumen de NavMesh (Crear > Navegación) y dentro se genera sola
la malla de navegación a partir de la geometría de colisión. Se ve en verde en la escena (tecla P) y se
actualiza en tiempo real al mover, crear o borrar colliders. Lo que tenga que moverse lleva el componente
NavAgent (Agente de navegación).
Agente (Entity)
:moveTo(destino) | Camina hasta el punto por la malla, esquivando obstáculos y a otros agentes. Devuelve false si el destino no está en la malla. |
:stopMoving() | Se para. |
isMoving | Si va hacia un destino (pasa a false al llegar). |
remainingDistance | Metros que le quedan por el camino. |
navVelocity | Su velocidad actual (Vec3). |
Sin Rigidbody se mueve por su Transform, pegado a la malla. Con un Rigidbody dinámico se mueve
por velocidad (la física sigue actuando). La velocidad, la aceleración, el radio y el giro se ajustan en el Inspector.
Navigation
Navigation.findPath(desde, hasta) | Lista de Vec3 con los puntos de giro del camino, o nil. |
Navigation.projectPoint(punto, radio) | El punto de la malla más cercano, o nil. |
Navigation.randomPoint(centro, radio) | Un punto al azar de la malla dentro del radio, o nil. |
Navigation.raycast(desde, hasta) | Devuelve llega, punto: si la línea recta por la malla llega sin salirse, y dónde choca si no. |
Navigation.isReady() | Si ya hay malla. |
La malla sale de los colliders (caja, esfera, cápsula, malla y plano) y de los terrenos con colisión,
no de lo que se dibuja. No cuentan los triggers, los Rigidbody dinámicos ni los propios agentes. Un
NavModifier bloquea una zona o la encarece (los caminos la rodean si pueden).
¿Algo no queda claro o falta algo? Pregunta en el Discord.