En Unity cualquier escena con un Navmesh puede fácilmente
ser navegada por un game object
con un componente navmesh agent.
Aquí nosotros tenemos una escena en Unity.
La escena ya tiene un navmesh bake.
La escena también necesita un game object vacío
que será el objetivo de nuestra navegación.
Finalmente hay una cápsula la cual nosotros
aplicaremos a nuestro navmesh agent también.
La capsula tiene un SampleAgentScript adjunto.
Este script tiene una variable publica Target
la cual ya está configurada a nuestro game object vacío
llamado Target.
Para agregar un navmesh agent
haga click en el botón Add Componente
en la vista del inspector y seleccione
Navigation - NavMesh Agent.
El agente tiene varios ajustes los cuales
nosotros podemos modificar para cambiar su comportamiento.
El Radius representa el radio del agente.
Mientras que la Speed es la velocidad máxima del agente.
La Acceleration es qué tan rápido el
agente va a acelerar.
Y la Angular Speed es qué tan rápido
el agente puede girar.
La propiedad Stopping Distance
representa la distancia desde el objetivo
de que el agente va a comenzar a des-acelerar
Auto Traverse Off Mesh Links
dicta si sí o no el agente va a
utilizar off mesh links (Enlaces Off-mesh) de manera automática.
Más información acerca de los off mesh links (enlaces off-mesh)
pueden ser encontradas en la lección vinculada abajo.
Auto Braking determina si el agente
va a frenar cuando se acerca a su destino.
Dejando esto marcado va a parar el agente
de sobre-disparar el objetivo.
Auto Repath va a permitirle al agente
re-construir su camino si
su camino actual se vuelve invalido.
La propiedad Height es la altura del agente.
El Base Offset es el desfase vertical
del collider del agente.
El Obstacle Avoidance Type
tiene varias opciones.
Entre mayor cantidad, el avoidance (evasión) es más precisa.
En cantidad menores, el avoidance (evasión) es más eficiente.
La avoidance priority (prioridad de evasión) determina qué
agentes tienen prioridad cuando navegan.
Los agentes con una alta prioridad debería tener un numero menor.
Finalmente la propiedad NavMesh Walkable
le dice al agente qué capas de
navegación pueden atravesar.
Para más información acerca de capas de navegación
ver la lección acerca de navmesh baking vinculada abajo.
Vale la pena tener en cuenta que mientras nosotros podemos
cambiar estas propiedades,
para lograr un rango grande de efectos
las propiedades default van a funcionar para la mayoría de situaciones.
Una vez el componente navmesh agent
es aplicado y configurado
nosotros solo necesitamos decirle a dónde ir.
En nuestro SampleAgentScript
nosotros podemos ver que nosotros primero declaramos una variable
de tipo NavMeshAgent llamado Agent.
En el método Start nosotros obtenemos una referencia a nuestro navmesh agent
y lo almacenamos en nuestra variable agent
utilizando la función GetComponent. 69
Con el propósito de decirle a nuestro agente a dónde ir
nosotros utilizamos el método Set Destination
de la clase NavMeshAgent.
Éste método lee un solo vector3.
En esta instancia nosotros vamos a llamar el método SetDestination
al escribir Agent.SetDestination.
Luego en el paréntesis nosotros vamos a escribir
target.position.
Esto le dice a nuestro agente en moverse hacia
el game object objetivo.
De vuelta en Unity nosotros podemos correr nuestra escena.
Nosotros vamos a notar inmediatamente que la cápsula game object
comienza a moverse y atravesar nuestro nivel.
La capsula va a eventualmente alcanzar nuestro game object objetivo
y va a llegar a nuestra parada.