En el vídeo anterior escribimos El ídolo y los Estados de la Patrulla.
Ahora tenemos que crear la A. I. clase, que pondremos en nuestra guardia aquí para que sea capaz
de la transición a través de los estados.
Así que vamos a hacer clic derecho y crear una secuencia de comandos C-sharp llamado un AI y vamos a abrir eso.
¿Te va a sorprender lo corto que es este código?
Así que este es el código que adjuntaremos a nuestro NPC, que es UG en este caso.
En primer lugar, tenemos que asegurarnos de agarrar el material de la malla naval.
Así que el uso de la IA del motor de la unidad en la parte superior.
Y también queremos conseguir todos los trozos que necesitamos enviar a nuestros estados.
Así que necesitamos nuestro agente de malla naval.
Necesitamos al animador.
Un poco más tarde necesitaremos al jugador también porque necesitamos que su NPC persiga al jugador.
Así que vamos a poner un público.
Transformar el jugador allí y vamos a crear nuestro estado, que es el estado actual.
Así que eso es todo lo que necesitamos allí.
Sólo tenemos que recordarlo para dar el reproductor a este código en el inspector.
Justo en el inicio nos agarraremos a nuestros agentes.
Agente de malla NAV.
Así que el agente es igual a este componente de obtención de puntos.
Agente de malla NAV.
Y el animador, se pone como componente.
Animador.
Y entonces crearemos nuestro primer estado.
Así que el estado actual será igual al nuevo ídolo.
Y para ello tenemos que pasar por todos los trozos.
Así que este NPC en particular.
Así que este objeto del juego.
Entonces necesita al agente, al animador y al jugador.
Ahora podrías hacer un componente get dentro de tus estados y simplemente pasar por el objeto del juego, excepto que estamos creando y
destruyendo nuevos estados todo el tiempo.
Y así acabará retrasándose un poco.
Y tengo un poco de admisión de que más tarde vamos a llegar a un componente de conseguir dentro de uno
de los estados.
Pero hay una forma de evitarlo volviendo aquí y asegurándose de que se coge todo justo al principio
cuando la A. I. está configurado.
Ahora, en la actualización, si has creado alguna A. I. antes, la actualización es donde ocurre toda la magia
y la actualización puede llegar a ser como un verdadero código espagueti.
Puede ser muy, muy desordenado y muy difícil de depurar y difícil de hacer bien.
Pero usando estos estados aquí ponemos estado actual va a ser igual al estado actual punto proceso.
Así que recuerde proceso en los estados está trabajando a través de la entrada de la actualización y luego la salida y, a continuación,
cuando llega a la salida, devuelve el siguiente estado que tiene que ir, ni siquiera salir.
Si llega a algún punto de la actualización que necesita tirar, establece el nuevo estado siguiente,
que luego se pasa de nuevo en la salida.
Recordémoslo.
Así que vuelve a entrar en el estado y vamos a subir a la parte superior donde todo lo que está sucediendo aquí en el proceso.
Así que probablemente sea mucho más fácil de explicar si lo vemos realmente.
Así que el proceso se va a ejecutar desde la IA que lo pide.
Y luego si el escenario es enter, va a ejecutar el enter.
El enter se va a asegurar de que esa etapa se actualice para actualizar.
Así que la próxima vez que la actualización de la IA llame al proceso, entonces va a ejecutar esta actualización
y va a seguir haciendo eso hasta que la propia actualización te pase al estado de salida, momento en el que la salida se ejecuta
y luego vuelve, cualquiera que sea ese nuevo estado.
Y si echamos un vistazo abajo, en el ralentí, podemos ver que eso ocurre justo aquí, donde se está creando un nuevo
estado para ser patrulla.
Así que con un 10% de posibilidades en vacío, entraremos en una patrulla.
Muy bien, así que esa es tu clase de IA.
Eso es todo.
Eso es todo lo que necesitamos allí.
Y ya sabes, puedes añadir algunas otras cosas si quieres, pero en lo que respecta al comportamiento,
eso es todo lo que necesitamos.
Y seguimos añadiendo más estados y enlazándolos.
Vale, nos lo guardaremos.
Ahora vuelve a Unity.
Usted quiere arrastrar y soltar ese código II en ARG.
Así que busque ARG en su jerarquía, arrastre y suelte esa IA allí.
Ahora tenemos un controlador de PHP que habrá venido con su proyecto para que usted pueda caminar,
obtener eso y arrastrarlo a la parte de transformación del reproductor que está expuesta.
De nuevo, no entra en juego, pero lo hará un poco más adelante.
Muy bien.
Así que ahora estamos listos para pulsar el play y echar un vistazo.
Así que déjame hacer esta pantalla de juego un poco más grande.
Pulsa el play.
Muy bien.
Así que usted puede utilizar las teclas WASD para moverse alrededor de todas las teclas de flecha para este controlador de jugador y podemos
caminar hasta ARG.
Todavía no está programado para atacarnos.
Ahora está con un 10% de posibilidades destinado a salir de patrulla, pero no parece.
Ahora sé por qué es esto, y voy a volver a mostrarlo en un momento.
Pero por ahora puedes, supongo, disfrutar de su estado de inactividad.
Y eso es lo que parece cuando está en reposo.
Bien, entonces presiona escape para recuperar el cursor del ratón y dejar de jugar y vamos
a volver al código de estado.
Permítanme mostrarles dónde se produce ese problema.
De acuerdo.
Así que la parte realmente importante de todo este sistema estatal es que esto aquí funciona muy bien para
ir de una cosa a otra.
Así que entramos en vamos a actualizar, actualizar, actualizar, actualizar durante todo el tiempo que necesita
para ir a la actualización y luego vamos a la salida y luego volver el siguiente estado que tenemos que ir.
Lo que sucede en el ralentí y probablemente también lo he hecho mal en la patrulla.
Si bajamos al ralentí, echemos un vistazo.
La entrada se ejecuta en el momento es la configuración es de ralentí y luego se está ejecutando.
Su base es entrar.
Ahora su base entrar es la configuración de actualización de eventos, que es grande porque la próxima vez que el proceso se acerca, se
ejecutará la actualización.
Ahora volvamos a la actualización.
Así que ahora venimos a actualizarnos con un azar.
Empezamos a patrullar.
Luego ponemos el evento de escenario para salir, lo cual es muy bueno porque eso nos va a hacer avanzar
a la siguiente etapa dentro de nuestro proceso.
¿Pero es así?
Porque mira aquí abajo, estamos ejecutando esta actualización basada y si subimos
y echamos un vistazo a lo que hace, es seguir adelante y establecer nuestra etapa de nuevo a la actualización.
Así que, aunque lo hayamos configurado para salir, sólo va a volver a actualizar.
Así que en realidad no necesitamos llamarlo aquí.
Y hacerlo aquí es destrozar nuestro código, así que podrías deshacerte de él porque no nos sirve
de mucho.
O puede ponerlo encima de esta sentencia if y permitir que la sentencia if lo cambie.
Así que vamos a quitar eso de ahí.
Ahora voy a comprobar que no he hecho eso en la patrulla también porque eso nos dará la misma pequeña
situación más tarde porque no estamos cambiando fuera de la patrulla.
Una vez que entramos en la patrulla, estamos atrapados allí para siempre por el momento.
Vamos a deshacernos de esta actualización porque es un poco superfluo establecer la actualización para actualizar constantemente.
De acuerdo.
Así que ahora que estamos seguros o estoy seguro de que esto va a funcionar, vamos a guardarlo.
Volveremos a entrar en Unity Press play y luego veremos.
Así que puedes ver que ha salido inmediatamente a patrullar.
Así que un 10% de posibilidades.
Eso es comprobarlo.
10% de posibilidades.
Cada una de las actualizaciones.
Así que es bastante rápido.
Y ahora va a caminar entre todos los puntos de paso.
Ahora no los recoge en orden porque dependerá de cómo el entorno del juego se adelante y actualice
esos waypoints.
Sin embargo, pasará uno por uno.
Así que en este caso, el orden que que obtener los objetos del juego con el código de la etiqueta que tenemos en el entorno del juego es
conseguir que en una cruz como patrón.
A veces los pone en un patrón cuadrado, pero esta vez no es así.
Así que va a patrullar e ir entre todos esos puntos por siempre y para siempre.
Muy bien.
Ahora, probablemente estés pensando en este punto, ¿cómo puedo poner mis waypoints en el orden correcto?
Una forma de hacerlo es colocarlos en orden según su nombre.
Así que si echamos un vistazo a la jerarquía, tenemos estos puntos de control como
este y están situados de manera que van alrededor del mapa real.
Si quieres recogerlos por orden alfabético, entonces podrías usar su nombre y utilizar un enlace del sistema
allí.
Así que si entras en el código de tu entorno de juego donde se recogen esos puntos de control para hacer eso, sólo tienes
que añadir dos líneas de código, que ya he hecho aquí.
El primero de la parte superior es nuestra biblioteca.
Así que añada en sistema de punto de enlace que le permitirá hacer un poco de orden por en su lista.
Y puedes ver eso aquí abajo después de crear la instancia.
Así que los puntos de control instantáneos van a ser iguales a los puntos de control instantáneos ordenados por el nombre de los waypoints.
Y luego lo volvemos a poner en lista y lo volvemos a poner en nuestros puntos de control.
Así que esto los reordenará en orden alfabético, ascendente del nombre.
Así que usted podría ir a través de y cambiar el nombre de ellos como waypoint uno waypoint a 8. 3, lo que quieras, siempre que sean
alfabéticos y tengan ese orden concreto.
Es porque estamos haciendo una búsqueda de objetos de juego con TAG que nunca podemos estar seguros del orden real
en que obtendremos esos objetos de juego, pero entonces podemos forzar un orden usando eso.