Unity NavMesh

De MediaWiki
Ir a la navegación Ir a la búsqueda

Introducción

  • Más información en:


  • Uno de los problemas a los que nos podemos enfrentar al desarrollar un juego es de dotar de inteligencia a los enemigos y que sean capaces de 'esquivar' los obstáculos de un escenario mientras intentan coger a nuestro protagonista.
Podríamos intentar hacerlo nosotros, ya que vimos en esta Wiki el uso del vector dirección y podríamos hacer que los enemigos calcularan dicho vector con respecto al jugador y que se movieran hacia él.
El problema que tendríamos es que si existen obstáculos entre el enemigo y el jugador, quedarían atrapados, como se observa en la siguiente escena:
Unity3d navmesh 1.jpg
Si tuviéramos que programarlo podría ser muy laborioso.
  • Para solucionarlo, Unity ofrece el sistema de navegación inteligente: Navigation System.
Este componente va a permitir definir mediante una serie de parámetros que área de nuestra escena es 'caminable' por los enemigos.
Por ejemplo, podremos definir que las zonas elevadas más de X grados no sean navegables (por tanto serían un muro) o que las bajadas o subidas de desnivel a partir de un tamaño no sean accesibles (formarían otro muro).
Una vez creado el Navigation, asociamos a cada enemigo un NavMesh Agent el cual hará que dicho enemigo vaya 'detrás' del protagonista esquivando los posibles objetos que encuentre por el camino.



  • Vamos a preparar una escena para mostrar el uso de este componente.
  • Creamos una nueva escena o un nuevo EmptyGameObject sobre el que situaremos todos los gameobjects siguientes.


Navigation


NavMesh Agent


-- Ángel D. Fernández González -- (2018).