En esta sección, vamos a ver los agentes que se mueven de forma autónoma y la mecánica de dirección que
se utiliza para moverlos por el mapa.
Ahora, hay un montón de ellos que vamos a mirar uno a la vez y luego ponerlos juntos para obtener diferentes
comportamientos.
Así que, en primer lugar, lo que me gustaría que hicieras es crear un nuevo proyecto unity y traer el archivo de Stata
para esta conferencia.
Cuando abres la dirección que se ve en ella, que es esta de aquí, vas a encontrar que tienes
un plano de tierra y hay un árbol y hay dos pequeños agentes ahí.
Ahora, si pulsas el play, verás que el agente de policía va a poder moverse libremente con la tecla
de las flechas.
Así que no es un agente de malla nav, pero vamos a convertir el personaje de goma en un agente de malla nav.
Y más adelante también vamos a convertir el árbol en un obstáculo.
Pero, en primer lugar, queremos que el ladrón pueda perseguir al policía y también huir de él.
Así que ese va a ser nuestro objetivo en esta conferencia.
Ahora bien, si echamos un vistazo al policía o a la policía, se le llama en una jerarquía.
Sólo tienes que hacer clic en eso.
Verás que lleva un colisionador de cápsulas y tiene el script de conducción que le permitirá
moverse.
Ahora, he hecho un pequeño ajuste a este script de conducción.
Abramos eso y echemos un vistazo.
Es ligeramente diferente del script de Stock Standard Drive que encontrará en la documentación de Unity
para obtener acceso en eso.
También he añadido en un flotador público de la velocidad actual y luego estoy grabando en este flotador público de
la velocidad actual, las traducciones que está aquí abajo que estamos calculando porque vamos a usar
eso más adelante.
Muy bien.
Así que esa es la diferencia con eso.
Ahora, el propio ladrón debe convertirse en un agente de la malla naval.
Así que selecciónalo.
Vamos al inspector, hacemos clic en añadir componente y queremos ir al agente de malla nav.
Ahora, si echamos un vistazo a la goma de cerca, verás que la malla de navegación Agente Collider está desplazada por
encima del personaje.
Quieres mover eso hacia abajo.
Así que vamos al inspector y en el desplazamiento de la base sólo poner en uno y que se moverá hacia abajo la unidad
de uno, que luego se ajuste a él bastante bien.
Ahora para ver la malla de navegación en sí, el suelo y el árbol, si sólo seleccionamos los dos que están dentro
de este entorno aquí.
Así que tenemos un árbol allí y el suelo allí en el inspector verás que ambos están marcados
a la navegación estática.
Vamos a traer esto para que pueda ver la navegación estática que significa que cuando bakeamos nuestra
malla nav, si usted es un miembro, entonces vamos a obtener el árbol excluido.
Así que se va a convertir en un obstáculo porque es demasiado empinado para que los agentes suban.
Ahora bien, si se añaden más árboles a esto, lo que haremos un poco más tarde, tenemos que volver a hornear
cada vez para reconstruir nuestra malla de navegación.
Bien, ahora estamos listos para empezar a programar al ladrón para que persiga al policía.
Así que abajo en los activos, haga clic derecho crear una secuencia de comandos C-sharp.
Y sólo voy a llamar a este bot sólo para que sea simple arrastrar y soltar que en la jerarquía,
en la goma.
Así que tiene que estar en el mismo nivel que el agente de malla porque vamos a acceder a él dentro del script.
Así que ahora abrimos eso en la parte superior.
Vamos a hacer lo que hemos hecho antes con los agentes de la malla naval.
Pero antes de nada, necesitamos nuestra biblioteca de IA.
Así que usando unity, dot engine, dot AI y luego dentro de nuestra clase, vamos a crear un agente de malla
nerviosa llamado agent.
Entonces en la salida iremos de agente.
Equivale a este componente de obtención de puntos.
Y queremos obtener el agente de malla de navegación que se adjunta a este objeto de juego así.
Bien, ahora podemos escribir nuestro método de búsqueda.
Así que Seek es probablemente la más fácil porque básicamente es seguir algo más en la malla de navegación.
Así que no vamos a devolver nada de él.
Así que será nulo buscar, vamos a darle un vector tres, que es nuestra posición.
Así que lo llamaremos aquí ubicación de paso.
Y entonces todo lo que hacemos con nuestro agente de malla nav para eso es ir agente punto establecer destino y el destino
es la ubicación.
Ahora la ubicación en este caso va a ser el policía.
Así que tenemos que hacernos con el policía para poder seguirlo.
Así que de vuelta a la parte superior de nuestra clase, vamos a crear un objeto de juego público para nuestro objetivo.
Lo llamaremos allí.
Y luego lo que vamos a hacer con nuestro objetivo está en la actualización.
Envíalo a seek para que sea seek.
Y aquí vamos a pasar por la posición del punto de transformación del objetivo porque ese será nuestro
valor del vector tres del poli.
Ok, entonces guarda eso ahora vamos a volver a unity y quieres ir a tu ladrón y encontrar el script.
La secuencia de comandos, va a tener el objetivo expuesto y que es donde queremos arrastrar
y soltar el policía en ese objetivo.
Así que ahora pulsa el play y tendrás un ladrón que está continuamente actualizando su posición para seguir
al policía o buscar su ubicación.
Bastante sencillo.
Ahora, cuando el ladrón llega al policía, si nos fijamos bien, se para encima de
él.
Para evitarlo, seleccione el ladrón en la jerarquía sobre un inspector.
Quieres ajustar su distancia de frenado y eso está en la dirección.
Si tenemos una distancia de frenado y la ponemos, digamos, en dos, lo que significa que va a parar,
pero no justo encima del policía.
Así que ahora sólo tienes que pulsar el play y puedes ver cómo se acerca y se paran cara a cara así.
Y entonces no va a ir realmente encima del policía.
Y aunque el policía tiene un colisionador encima, no lo necesitas realmente para detenerlo.
De acuerdo, eso es Sikh.
Eso es bastante sencillo.
Así que lo que Sikh está haciendo es calcular un vector desde el ladrón hasta el policía.
En el caso más sencillo, es decir, si no hay obstáculos, tiene que calcular un camino
alrededor.
Pero digamos que nuestro vector va por aquí.
Así que el vector va a ser el policía menos el robot, lo que nos dará este vector aquí para la dirección que
el policía tiene que viajar.
Ahora, si vamos a huir, entonces queremos hacer lo contrario.
Queremos ir por este camino.
Pero, ¿cómo podemos saber cuál es ese camino?
Bueno, esta forma es sólo este vector multiplicado por menos uno, que va a dar la vuelta.
Así que está orientado en esa dirección.
Pero no podemos dar al conjunto destino sólo un valor vectorial.
Hay que darle una ubicación real a la que quieres que huya el ladrón.
Así que en lugar de tomar sólo este vector que vamos a calcular hasta aquí, vamos a añadirlo
a la posición de la goma, que en realidad nos dará como este punto aquí, y que hará que la goma
huya en la dirección opuesta por allí.
Bien, pongamos esto en práctica.
Vuelve a tu código y debajo busca.
Vamos a añadir la huida al vacío.
También vamos a huir a un vector.
Así que el vector tres, vamos a darle la ubicación de la que estamos huyendo, que de nuevo, es nuestro objetivo.
Pero esta vez vamos a, en primer lugar, ir al vector tres.
El vector de huida es igual a la ubicación menos esta posición de punto de transformación.
Y luego con ese vector, vamos a establecer el destino al destino del agente.
Y esa será entonces la ubicación del agente esta posición de transformación de puntos.
Menos el vector de las pulgas.
Muy bien.
Así que eso es huir ahora aquí abajo en la actualización.
En lugar de buscar, lo cambiaremos por huir para que podamos ver que se ejecuta.
Guárdalo.
Volvamos a la unidad y ahora pulsaremos el play.
Y puedes ver que ahora ha huido.
Ahora, sólo para ver eso un poco más claramente, si alejamos el zoom y hacemos que el policía trate de dar
la vuelta.
La parte de atrás aquí en algún lugar para que pueda obtener la goma para mover y huir en una dirección diferente.
Así que ahora le ha hecho ir así.
Se ve que va a seguir huyendo.
Así.
Así que mientras tratamos de acercarnos, él va a seguir adelante.
Pero el policía en este caso va mucho más rápido, así que lo alcanzará.
Pero eso es la huida y la búsqueda.
En el próximo vídeo, volveremos a ver la persecución.