Cargar Múltiples NavMeshes utilizando el Additive Loading
NavMesh Agent
Utilizando el NavMesh Agent con otros componentes
Usted puede utilizar el NavMesh Agent, NavMesh Obstacle, y los componentes Off Mesh Link con otros componentes de Unity también. Aquí hay una lista de los deberes y lo que no debe hacer cuando mezcle diferentes componentes juntos.
NavMesh Agent y Física
Usted no necesita agregar physics colliders a los NavMesh Agents para que estos se eviten
Esto es, el sistema de navegación simula los agentes y su reacción a obstáculos y el mundo estático. Aquí el mundo estático es el baked NavMesh.
Si usted quiere que un NavMesh Agent empuje objetos físicos o utilizar triggers físicos:
Agregue un componente Collider (si no está presente)
Agregue un componente Rigidbody
Prenda Kinematic (Is Kinematic) - esto es importante!
Kinematic significa que el rigidbody es controlado por algo además de la simulación de física
Si ambos el NavMesh Agent y el Rigidbody (no-kinematic) están activos al mismo tiempo, usted tiene una condición de carrera (race condition).
Ambos los componentes puden intentar mover el agente a lo mismo que lleva a un comportamiento indefinido
Usted puede utilizar un NavMesh Agent para mover e.g. un personaje jugador, sin física
Configure la avoidance priority (prioridad de evasión) del agente a un número pequeño (alta prioridad), para permitirle al jugador atravesar multitudes.
Mueva el agente de jugador usando NavMeshAgent.velocity, para que otros agentes puedan predecir el movimiento del jugador para evitar al jugador.
NavMesh Agent y Animator
NavMesh Agent y Animator con Root Motion puede causar una condición de carrera (race condition)
Ambos componentes intentan mover el transform cada frame
Dos soluciones posibles
La información debería siempre fluir en una dirección
Cualquiera de los agentes mueve el personaje y la animación sigue
O la animación mueve el personaje basándose en el resultado simulado
De lo contrario usted va a terminar teniendo un loop (bucle-ciclo) de retroalimentación difícil de depurar.
Animation follows agent (Animación sigue el agente)
Utilice el NavMeshAgent.velocity como entrada para el Animator para que coincida aproximadamente con el movimiento del agente a las animaciones
Robusto y fácil de implementar, va a resultar en un pie deslizándose dónde las animaciones no pueden coincidir con la velocidad.
Agent follows animation (Agente sigue la animación)
NavMesh Agent (Agente NavMesh) y NavMesh Obstacle (Obstáculo NavMesh)
No se mezclan bien!
Activar ambas va hacer que el agente se intente evitar a él mismo
Si Carving es habilitada, adicionalmente el agente va a intentar constantemente re-mapear al borde del hueco tallado, incluso más comportamiento erroneo se produce
Asegúrese de que solo uno de ellos esté activo en cualquier momento
Estado fallido, usted puede apagar el agente y prenderlo en cualquier obstáculo para obligar a otros agentes evitarlo
Alternativamente usted puede utilizar prioridades para hacer que ciertos agentes sean evitados más
NavMesh Obstacle y Física
Si usted quiere que objetos controlados por física afecten el comportamiento de su NavMesh Agent
Agregue un componente NavMesh Obstacle al objeto el cual el agente tiene que tener estar pendiente, esto le permite al sistema de avoidance (evasión) para razonar acerca del obstáculo.
Si un game object tiene un Rigidbody y un NavMesh Obstacle adjunto, la velocidad del obstáculo es obtenido del Rigidbody de manera automática
Esto le permite a los NavMesh Agents en predecir y evitar el obstáculo en movimiento
Cargar Múltiples NavMeshes utilizando el Additive Loading