Acerca del problema de detención y actualización de la búsqueda automática de rutas de Unity navMeshAgent

About Stop Update Problem Unity Navmeshagent Automatic Pathfinding

Estos dos días pueden matarme. Evidentemente, es una pregunta muy sencilla. No entendí la esencia básica. Solo pensé que cuando lo terminara, sería algo muy malo. También compartí la solución. El método es muy bajo.

En primer lugar, una breve introducción al complemento navMeshAgent, de hecho, es el algoritmo a * para encontrar la ruta óptima más corta, después de hornear aún puede determinar dónde ir, dónde no puede ir.





Qué objeto necesita encontrar una ruta y agregarle un componente Nav Mesh Agent, principalmente introduce los parámetros bajo la dirección, uno es la velocidad de búsqueda de ruta, la aceleración máxima, la velocidad angular y la distancia de frenado. Estos parámetros pueden hacer que su búsqueda de caminos sea más elegante y se recomienda usarlos cuando los ajuste usted mismo.



Necesita hornear la escena antes de usarla.

En 'Ventana' - 'Navegación', abra la ventana 'Navegación'



Verifique los lugares por los que no puede pasar, como las barandillas en mi escena, seleccione los lugares por los que puede pasar y seleccione el panel 'Hornear' para hornear en 'Navegación'.

Si no saltas, Generate offMeshLinks no está marcado.

Luego está la parte del código (el código está escrito en el objeto que necesita encontrar)

hombre privado NavMeshAgent
objetivo de transformación pública

Primero, debe definir una variable para NavMeshAgent y una variable para el punto de destino.

man = gameObject.GetComponent ()

Asigne un valor a esta variable en la función de inicio.

|_+_|

Hablando directamente de la segunda corrutina, aquí hay un juicio a distancia. Cuando llegues al protagonista, debes dejar de buscar. De lo contrario, siempre golpearás al protagonista, porque siempre quiere ir a la posición debajo del protagonista, por lo que es muy ilegal. Cuando el personaje principal esté lejos de él, detenga el apagado y restablezca la posición actual del personaje principal como el punto de destino; de lo contrario, el soldado no actualizará la posición de destino.

El man.isStopped aquí es la API cambiada después de una cierta versión, que debería ser man.Stop () close, man.Resume () Por supuesto, todavía hay muchas funciones como borrar la ruta actual, etc. Esto corresponde a su propias necesidades para comprobar la API. Todavía hay muchos tutoriales en Internet. Cuando encuentres un camino, también puedes realizar el juego MOBA. .