En esta conferencia, vamos a usar una malla de navegación para que un personaje persiga a
nuestro personaje jugador en un entorno. Si desea descargar el archivo Zombie Chaser Starter que viene
con esta conferencia, puede seguirlo.
Abra la escena ZombieChaser que está dentro del archivo y encontrará esta configuración aquí. Tienes un personaje zombie que está allí
y ella ya tiene animaciones, por lo que podrás verla caminando y
también
hay un personaje jugador. Si presiona Reproducir en este punto,
verá que tiene un controlador en primera persona que ya está instalado y ese es el
Activo estándar predeterminado que puede obtener con Unity y tiene el zombi. La animación está encendida, pero no hay nada que
empuje al zombi hacia adelante, en absoluto.
Entonces, vamos a trabajar.
En primer lugar, necesitamos configurar nuestra navmesh.
Entonces, en la Jerarquía, encontrarás 3 cosas. Stevie (nuestro zombie), un controlador FPS
(que somos nosotros) y luego está el modelo de almacén en sí.
Si selecciona el padre, obtendrá todo.
Entonces solo aplicaremos el navmesh a todo.
Lo primero que debemos hacer, en el Inspector con todo lo seleccionado, subiremos
al 'Estático' y lo convertiremos en un 'Estático de navegación' y diremos [Sí, cambiar a los niños] para que todo
esto las mallas se incluirán en el cálculo.
Ahora abre tu pestaña de Navegación.
No vamos a cambiar ninguna de las configuraciones predeterminadas aquí, así que seleccione [Hornear]. La configuración predeterminada se configura para
un personaje de tamaño promedio, que generalmente tiene alrededor de 2 metros de altura con un radio de medio metro
y un tamaño de paso de 0. 4 (que está bien en este caso) y una pendiente de 45, pero en realidad no
hay muchas pendientes en este almacén en particular. Hay muchos más pasos que cualquier otra cosa. Con ese horneado realizado, ahora
puedes echar un vistazo y ver todos los diferentes lugares donde fue ese horneado y
también hay (si seguimos y solo hacemos un zoom aquí) puedes ver que subió las escaleras, pueden ver que
subió las escaleras.
Entonces, si caminas por aquí, podrás hacer que el zombi te siga por las escaleras, que es lo que
queremos que haga.
Ahora agreguemos un código a Stevie, nuestro zombie para que nos siga.
Entonces, antes que nada, debemos hacer clic en ella en la Jerarquía, ir al Inspector y agregar el Agente de malla de
navegación, para convertirla en algo que pueda seguirte. Puedes ver inmediatamente una vez que hayas
hecho eso, el cilindro envolvente que encontrarás alrededor de ese personaje que la empujará y evitará que se
encuentre con cosas.
Luego, necesitamos escribir un código que establezca el destino de nuestro agente.
Entonces ya lo tengo aquí.
Es un archivo C # llamado 'ChasePlayer'.
Así que crea ese archivo C # y luego arrástralo y suéltalo sobre el personaje zombie.
Ahora solo abre eso y echaremos un vistazo al código que está allí.
Entonces, antes que nada, tenemos un enlace a nuestro jugador porque el zombi necesita saber dónde está el jugador en
todo momento, para que pueda seguir ajustando su destino.
A continuación, crearemos un enlace al NavMeshAgent que se adjunta a
nuestra A. YO. personaje. Luego, en
el Inicio, configuramos ambas cosas.
El jugador será agarrado usando FindWithTag ("Jugador"), por lo que estableceremos la etiqueta de nuestro personaje jugador en
'jugador' y luego el agente, como lo hemos hecho antes, solo está agarrando
el NavMeshAgent adjunto a este personaje. Ahora, como estamos usando Navmesh, todo lo que tenemos
que hacer en la Actualización es simplemente configurar el destino para que el agente sea la posición de los jugadores.
Por lo tanto, es 1 línea de código y el navegador está haciendo todo el resto del trabajo por usted.
Una vez que hayas agregado eso, guárdalo, vuelve a Unity y asegúrate de que tienes tu código adjunto a Stevie, así que
aquí está en la parte inferior.
Pasemos a nuestro FPSController, que es nuestro personaje jugador en este caso,
y asegúrese de etiquetarlo como 'Jugador'. La etiqueta 'Jugador' con una 'P' mayúscula ya existe como
predeterminada en Unity, así que solo selecciónela. En este punto, podemos presionar Reproducir y ver el efecto de nuestro código.
Ahora, cuando comenzamos, inmediatamente el zombie está justo encima de nuestro personaje y puedes verlo allí. Simplemente me alejaré, daré
la vuelta, se está moviendo bastante rápido y cuando
se acerca a nosotros, termina exactamente en nuestra posición.
Puede moverse con las teclas W, A, S, D o las teclas de flecha.
Así que ajustemos su velocidad y el hecho de que se acerca mucho a nosotros. Presione la tecla Escape para liberar el control
de su mouse.
Deja de jugar, luego selecciona Stevie en la Jerarquía. En el Nav Mesh Agent,
podemos cambiar la Velocidad poniéndola a 1 y podemos establecer la Distancia de detención.
Actualmente está configurado en 0 de forma predeterminada, pero digamos que queremos que esté a 2 metros de nosotros cuando
se detiene, en lugar de estar justo encima de nosotros. Presione Play y observemos el efecto
de eso.
Entonces, si me doy la vuelta, ella se detendrá.
Ella no está tratando de seguirnos porque está dentro de esa distancia de parada de 2. Ahora, si me alejo, ella
caminará lentamente (a una velocidad de 1) hacia nosotros.
También notará que no hemos hecho nada sobre las animaciones alineadas con el movimiento.
No te preocupes por eso en este momento.
Queremos que la funcionalidad funcione primero.
Ahora, mientras deambulas, es posible que notes que hay un comportamiento extraño con el zombi.
Déjame mostrarte, así que juguemos esto.
Lo que voy a hacer es caminar detrás de ella, hacia esa puerta verde.
Caminaré hacia atrás, para que podamos ver lo que hace.
Ella camina hacia nosotros ...
pero luego voy por aquí ...
Ella se da vuelta y se va.
Ahora no hemos programado ese tipo de comportamiento y es como si de repente hubiera perdido interés y ya no
nos puede ver.
Pero eso no es lo que pasó.
Ella no es tan inteligente.
No hemos programado eso en ella.
Lo que está tratando de hacer es encontrar otro camino para llegar a nosotros desde la red de navegación
en la que
se encuentra y la razón es esta ... déjame escapar Voy a ir y activar la ventana de navegación para que pueda
ver la malla de navegación en la ventana. Mirando hacia abajo, verás
que hay una brecha en la malla de navegación.
Ahora es muy, muy pequeño, PERO todavía es una brecha y Stevie no puede cruzar esa brecha porque no cree
que haya un camino que pueda seguir para llegar desde donde estaba allí, hasta donde
estamos ahora.
En cambio, piensa que su camino es ir en otra dirección, que es ella.
Por lo tanto, ha encontrado una ruta y se puede decir que ha encontrado una ruta debido a las áreas
oscuras que el algoritmo A * ha resaltado para nosotros, lo que supondría un largo camino.
Así que ha resuelto el problema de no poder superar esta pequeña brecha yendo por
el camino largo, yendo y viniendo y
volviendo a nosotros.
Entonces, si tuviéramos que caminar hacia atrás y saltar esa pequeña grieta nuevamente, ella volverá a recorrer el
camino largo, lo que es un comportamiento divertido de ver, pero probablemente no sea exactamente lo que
quiere en este caso.
Así que necesitamos encontrar una manera de cerrar esta pequeña brecha aquí.
Ahora no se trata de remodelar o agregar más modelos ni nada.
Es solo una cuestión de usar lo que se llama 'Off Mesh Links'. Un enlace fuera de malla es un enlace que permite que un
agente salte los huecos en las mallas.
Así que tenemos nuestras 2 mallas aquí. A
ver si puedo seleccionarlos. Así que ese es ese y seleccionaré con mayúsculas el
otro que elegirá ese allí arriba. Así que estas son las 2 piezas del piso. Lo que voy a hacer con ellos es pasar a la ventana
de navegación ...
desea ir a la pestaña Objeto y desea marcar 'Generar enlaces fuera de malla'. Lo que hará es unir estos
2 planos.
Regresamos a la pestaña Bake y luego bajamos a donde dice 'Generated Off Mesh Links' y
configuramos la 'Distancia de salto'. Actualmente está configurado en cero, por
lo que si intenta hornear en este punto, no obtendrá ningún enlace en esas 2 mallas.
Digamos que ingrese un valor como 2 aquí y presione hornear y verá estos círculos aparecer en la
malla en sí. Puedo
acercarlo y orientarlo un poco y verá aquí que establece enlaces para que el
zombie podrá moverse a través de estas mallas.
Presione Play y probémoslo. Ok, entonces voy
a caminar por aquí hasta la puerta verde y ella me seguirá y cruzaré la brecha y
se puede ver que se saltó esa brecha muy bien y ahora me seguirá
a donde sea Ahí está esa línea azul.
Ahora, lo último que quiero mostrarles es otro tipo de enlace fuera de malla, pero uno donde hay una caída, así
como una brecha.
Entonces, lo que ya hemos hecho es crear el que está cerca de la puerta verde, que
cierra esa pequeña brecha, pero quiero que Stevie pueda seguirme desde la parte superior de este contenedor en
particular, al que
actualmente puedo llegar, pero ella no puede. No hay vínculos allí para levantarse. Por lo tanto, podemos hacer un
enlace fácilmente aumentando el tamaño del paso que puede subir y si lo establecemos en 1. 6 y luego hornearlo
y Stevie también aceleraré hasta 5.
Solo presionemos Reproducir y podremos ver que ella me va a seguir rápidamente a ese
contenedor.
Así que simplemente saltaré aquí y
ella está allí y puedes ver si retrocedo un poco, está en ese contenedor debido al tamaño del escalón
que le permite llegar allí.
Aunque si salto y miramos hacia atrás, ella tendrá que ir por el otro lado para volver a mí.
Ahora, si has visto The Walking Dead, sabes que los zombis son bastante estúpidos y si te saliste del borde
de un acantilado, ¡ellos también lo harían!
Así que modifiquemos este navmesh para que permita a los agentes ir desde una cierta altura de caída.
Para hacer eso, vamos a seleccionar desde dónde vamos a caer y también hacia dónde nos vamos a caer (no importa en
qué orden los seleccione).
Entonces, seleccione Mayúsculas esas dos partes allí que queremos vincular con un 'enlace fuera de malla' y luego
iremos a Navegación, en Objeto queremos hacer clic en 'Generar enlaces fuera de malla' para estos dos cuadros en particular y luego
volver en Bake y esta
vez cambiamos la 'Altura de caída'.
Así que hagamos 10 porque es
una distancia considerable para desplegar y luego hacer clic en [Hornear].
Lo que encontrará es que aparece una serie de círculos que están vinculados (si puedo dar la vuelta para que pueda
verlo un poco mejor). Allí están.
Es como un efecto de cascada, donde puedes ver que los círculos aquí arriba están vinculados
a los círculos aquí abajo.
Estas son las posiciones donde Stevie podrá saltar y seguirnos desde ese contenedor.
Presiona Play y lo probaremos.
Así que queremos ir por aquí, subir las escaleras ...
arriba en este contenedor y
... ¿donde esta ella?
Aquí viene ella.
Bien, ahora, cuando salto y me doy la vuelta, nos ha seguido hasta allí en lugar de volver a
recorrer el camino largo.
De acuerdo, así es cómo hacer que un personaje te siga, pero también cómo generar tus 'enlaces fuera de malla', que son
realmente importantes cuando tienes brechas pequeñas y cosas divertidas que suceden en tu navegador que
quieres que tus agentes puedan para navegar una y otra vez.