En la clase anterior, hemos creado nuestra clase de estado base.
Ahora vamos a heredar de eso y crear un comportamiento de inactividad y de patrullaje para nuestro personaje, ¿verdad?
Así que justo debajo de esa clase base state, vamos a crear una clase pública llamada
Idol y va a heredar de state.
Así.
De acuerdo.
Así que lo primero que va a necesitar es su constructor.
Así que queremos que el ídolo público y luego va a tener todas las cosas que nuestro estado tiene.
Así que vamos a copiar todo eso porque no tiene sentido que lo escribamos todo de nuevo
y lo pongamos ahí.
Y luego también después de eso, vamos a poner en la base y ejecutar a través de la NPC, el agente.
El anuario.
Y el jugador.
Detalles sólo para pasarlos ya que la base va a almacenar eso para nosotros de todos modos.
Y entonces todo lo que necesitamos hacer dentro de este constructor es darle un nombre a nuestro estado.
Así que el nombre es igual al punto de estado.
En reposo para que sepa lo que es.
Sí.
La siguiente cosa que vamos a poner aquí, es sólo desplazarse hacia abajo un poco es ahora nuestra entrada.
Así que public override, void, enter y luego dentro del enter antes de querer poner la base enter allí automáticamente para usted si usted
está usando Visual Studio, que está bien porque usted quiere ejecutar esto de todos modos.
Y si echamos un vistazo aquí arriba a lo que está haciendo nuestra base enter, está preparando el escenario para actualizar.
Así que eso significa que no tenemos que hacerlo aquí abajo.
Pero lo que tenemos que hacer al entrar en el estado de ídolo es activar la animación de ídolo.
Así que eso va a ser un disparador de puntos de animación.
Es Otto.
Y si echas un vistazo en el animador, verás que hay un disparador ahí llamado es
Otto, que te lleva de cualquiera de los otros estados que no son de reposo a reposo.
Sí.
Así que esa es nuestra entrada.
Ahora, por supuesto, necesitamos un override void público para la actualización.
Y dentro de la actualización de nuevo, vamos a ejecutar la actualización de la base como la última cosa.
Pero también queremos hacer aquí es la transición a nuestro siguiente estado.
Así que recuerda que dije antes en el último video, es que en algún lugar dentro de la actualización, tiene que romper
a sí mismo fuera de allí.
Así que este es el único lugar que va a hacer porque la actualización es esencialmente como
un pequeño bucle de mini juego que va a correr una y otra vez para su estado y cuidar el procesamiento de la misma.
Y para pasar de la actualización a la salida, tienes que tener algún tipo de condición aquí.
Así que vamos a hacer un valor aleatorio.
Así que si el rango de puntos aleatorios de 0 a 100 es, digamos, menos de diez, entonces el 10% de las veces lo que vamos a hacer es pasar
a la siguiente etapa.
Así que justo dentro de algunos paréntesis aquí, vamos a poner siguiente estado es igual a la nueva patrulla y que la patrulla
va a necesitar el agente NPC, Adán y el jugador.
Todavía no hemos escrito la patrulla, pero va a ser el nuevo estado.
Y luego aquí en realidad vamos etapa es igual a la salida de eventos y lo que va a hacer la próxima vez que el proceso que
está aquí arriba viene alrededor es que va a lanzar en la etapa de salida en su lugar, que luego devolverá
el siguiente estado que acabamos de establecer aquí.
De acuerdo.
Y finalmente tenemos que poner nuestro public override void y eso será para la salida.
Y aquí tenemos que mantener nuestra base y vamos a poner en Adam Dot gatillo de reposición.
Es.
No hay nada que hacer.
Ahora bien, esto es un pequeño truco para hacer con el sistema McAdam si has disparado algo aquí
arriba.
Lo que hace es como poner un evento en el sistema que no se utiliza hasta que la animación que se supone que debe
desencadenar se ejecuta.
Si esa animación no se ejecuta o no necesita ser activada, entonces ese pequeño evento sigue ahí.
Y lo que puede hacer es causar algunos problemas más tarde cuando usted va a establecer el gatillo para
caminar y luego su personaje no camina es porque podría haber un viejo es inactivo todavía sentado allí en la cola.
Así que al restablecerlo en la salida significa que todo lo que lanzamos allí que no necesitaba ser,
sólo va a ser eliminado y sólo va a limpiar esa animación para nosotros.
Y esto es lo que quiero decir con contener todos los comportamientos necesarios justo dentro de un estado.
Así que esto es algo relacionado con el ralentí y cómo salir de él, y eso es todo.
No queremos nada más.
No queremos comprobar otros estados relacionados con otras cosas y y cosas así.
Sólo se trata del ralentí.
Y ahora vamos a crear la patrulla porque las llamadas de inactividad en la patrulla y entonces podemos realmente conseguir algo que
se ejecuta que se puede ver.
Así que bajo el estado de inactividad en los estados, punto KSFO añadirá patrulla.
Así que será una clase pública Patrulla que va a heredar de Estado.
El Estado tiene que mover a tu personaje por los diferentes puntos de paso.
Así que necesitamos un índice para contar a través de esos waypoints que están en nuestro array que hemos configurado o al menos
hemos configurado en el entorno del juego.
Así que vamos a empezar con un int para el índice actual y vamos a hacer que menos uno.
Y vamos a crear nuestro constructor.
Así que patrulla pública.
Ahora, esto va a tener todo lo mismo que pusimos para Idle.
Así que vamos a tomar todo esto para ahorrarnos, escribirlo de nuevo.
Cópialo, y pongámoslo aquí.
De acuerdo.
Luego, dentro de esto, lo que vamos a hacer es establecer el nombre a estado.
Patrulla de puntos.
La velocidad del agente a a y el punto del agente se detiene igual a.
Falso.
Ahora puede detener un agente y hacer que un agente se mueva por un camino determinado.
Si se cambia, este es un valor detenido.
Así que si el agente está actualmente haciendo algo más, en realidad queremos detenerlo en
este punto porque vamos a darle otro, supongo, destino a seguir.
La otra cosa que notarás aquí es esta Velocidad del Agente, que es otra propiedad del agente de la malla
naval, y eso es lo rápido que tu personaje se va a mover.
Ahora, en este caso, cuando tengo a UG caminando o, ya sabes, haciendo la animación de caminar, entonces una velocidad de dos
cuando se mueve parece no ser tan malo en cuanto a asegurarse de que no parece que está deslizándose
en el suelo.
Así que eso es algo más que puedes considerar para trabajar y coordinar.
No hemos añadido una velocidad de agente al ralentí.
Obviamente, en el estado de reposo el agente va a ser estacionario, pero debido a que el agente no tiene una ruta que
se está moviendo a lo largo de su malla de navegación, será estacionario por defecto de todos modos.
La velocidad del agente en este caso sólo entra en juego.
Si el agente necesita moverse a lo largo de un camino, no significa que si lo estableces en dos, el agente simplemente comenzará
a moverse a la velocidad de dos.
Sólo si tiene un camino, ¿no?
Así que eso es todo lo que necesitas dentro de tu patrulla.
Bien, entonces vamos a bajar y ahora pondremos nuestra entrada nuestra actualización y nuestra salida.
Así que va a ser un override público, void enter.
Y vamos a copiar esto y tendremos tres de ellos.
Así que queremos uno para actualizar.
Haz esta actualización.
Así.
Actualizar y luego hacer que esta sea la salida.
Y salida.
Muy bien, entonces en la entrada, ¿qué hacemos?
Bueno, queremos agarrar nuestra lista de nuestros waypoints, y en realidad vamos a volver y hacer un poco más de trabajo
aquí más adelante.
No necesitamos guardar nuestros waypoints en nada porque recuerda el entorno del juego,
Singleton los tiene.
Así que, por ahora, dejaremos eso fuera de la entrada.
Pero lo que no queremos hacer es poner y establecer el gatillo y el conjunto está caminando para hacer que la animación de inicio para que su agente
será, obviamente, caminando ahora para moverse alrededor de esos puntos de ruta.
Lo haremos dentro de nuestra actualización.
Y bueno, en primer lugar, comprobar que el agente.
No ha terminado su recorrido actual entre un waypoint y otro.
Así que si la distancia restante del agente es menor que uno.
Entonces vamos a pasar al siguiente waypoint.
Así que si el índice actual es mayor que el número de puntos de ruta, por lo que el entorno del juego, aquí es donde nuestro singleton
viene en.
Puntos de control de puntos singleton, recuento de puntos.
De acuerdo.
Me acabo de dar cuenta después de haber avanzado mucho en este video, es que esta línea te
va a dar un error.
Antes de seguir adelante, asegúrese de que su índice actual es mayor o igual que el
recuento de puntos de control menos uno.
Así que esa es la línea que debes actualizar y mantenerla así.
De lo contrario, el resto del código va a contar fuera del rango del número de puntos
de control que tienes.
Así que no verás esta línea así en el resto del video, pero asegúrate de mantener
la tuya así para evitar que ocurra ese error, entonces el índice actual va a ser igual a cero.
Así que vamos a llegar al final de la lista de puntos de ruta y cambiar de nuevo a cero.
Si no, sólo queremos ir al siguiente.
Así que el índice actual es igual al índice actual más uno o el índice actual más, así.
Y una vez que tenemos eso, podemos establecer el destino.
Así que vamos a ir agente punto establecer destino y que el destino será que waypoint particular.
Así que será el entorno del juego, punto único punto puntos de control.
En el índice del índice actual.
Ahora el destino establecido necesita un vector tres, por lo que será la posición de punto de transformación
de ese waypoint en particular.
De acuerdo.
¿Tienes todo eso?
Y entonces sólo tenemos que terminar ese límite de corchetes, hacer esto sólo un poco más grande para que pueda ver todo
ese código y usted debe estar recibiendo una muy buena sensación de los singletons en este punto es lo fácil que después de configurar
esa lista de puntos de control, en realidad podemos volver y sólo agarrarlos en aquí sin haber
pasado por todos ellos.
Así que esto va a contar a través de todos nuestros puntos de ruta y luego mover el agente en uno tras otro.
Ahora, el índice actual, si recuerdas bien en la parte superior aquí, se establece en menos uno.
En realidad, no queremos intentar empezar a movernos desde el menos uno porque no hay menos uno para el índice
actual.
Así que en la entrada también añadiremos en índice actual igual a cero para que empecemos por el primero.
De acuerdo.
Así que esa es la actualización.
Ahora, ¿qué entra en la salida?
Bueno, en realidad no mucho.
Todo lo que queremos hacer es asegurarnos de restablecer el gatillo de la marcha como lo hicimos con nuestro ídolo.
Así que Adam Dot reinicia el gatillo.
Es.
Caminando.
Y eso es todo.
Ahora, esta patrulla no hace referencia.
Cualquier otro estado.
De acuerdo.
Y la otra, las referencias ociosas a la patrulla.
Así que en lo que a nosotros respecta, en este momento, esto es suficiente para que vayamos a utilizar
la patrulla.
De acuerdo.
Así que cuando volvamos en el próximo vídeo, escribiremos la clase ojo, que manejará todos estos estados.