En la clase anterior hemos configurado los fundamentos de nuestro árbol de comportamiento y hemos impreso los nodos reales
y la estructura en la que vienen.
Ahora los nodos de la parte inferior son los nodos hoja.
Son los que van a hacer el trabajo y hacer que nuestro agente, que es nuestro ladrón en este caso, se mueva
realmente por el mapa, lo que está simulando que realmente hace algo.
Así que el primer conjunto de comportamientos que tenemos es ir a Diamond y luego volver a la furgoneta.
De acuerdo.
Así que lo primero es lo primero, nuestro pequeño agente aquí abajo, nuestro ladrón, si haces clic en él
en la jerarquía y echas un vistazo en el inspector, verás que ya tiene un agente de malla naval allí.
Así que tenemos que conseguir ese agente de malla naval dentro de la secuencia de comandos.
También necesitamos saber en ese guión la ubicación del diamante, que está en esta parte de la galería
y también la furgoneta que está por aquí.
Y esos dos objetos están en la jerarquía, por supuesto.
Así que también los tenemos, y podemos pasarlos al guión para el ladrón.
Así que vamos a entrar ahí y a la parte superior aquí.
Vamos a pasarlos.
Así que queremos un objeto de juego público y ese será nuestro diamante.
Y luego queremos un objeto de juego público.
Furgoneta.
Ahora también queremos crear nuestro agente de malla naval aquí.
Así que arriba vamos a usar el motor de la unidad punto I.
Y luego aquí abajo podemos crear nuestro agente.
Así que es un agente de malla naval.
Y para conseguir el asimiento de eso apenas abajo en el comienzo, iremos el agente igual este punto consigue el agente de la malla de la
marina del componente.
Bien, ahora podemos dirigirlo hacia el diamante.
Así que si ponemos abajo en el inicio aquí, por ejemplo, el destino del conjunto de agentes y pasar por la posición transformada de
diamante, que luego se moverá allí, independientemente de lo que el árbol está haciendo.
Esto es sólo una prueba de nuestro agente configurado con nuestra malla de navegación.
Así que guarda eso y entraremos en la unidad.
Selecciona la goma.
Ahora vas a encontrar a Diamond y Van expuestos en ese guión.
Y así puedes agarrar el diamante, que en realidad está unido a este objeto llamado plinto.
Y vamos a arrastrar y soltar eso en el diamante.
Y la furgoneta en sí está aquí arriba, furgoneta de huida y arrastrar y soltar eso allí.
De acuerdo.
Ahora, cuando pulsamos el play, ese agente establecido como destino va a hacer que se mueva a lo largo de nuestra malla de navegación.
Va a pasar por el hueco más cercano que actualmente es esa puerta porque en realidad es sólo un objeto
vacío sin ningún colisionador particular ni nada.
Y se acerca al diamante.
Bien, ya sabemos que la parte de la malla naval está funcionando.
Tenemos que conectar todo eso con una acción real.
Así que una acción tiene un proceso asociado.
Volvamos a nuestro código para el nodo y recordemos lo que está pasando.
Hemos configurado este estado de manera que cada nodo va a devolver éxito si ha terminado y se ha ejecutado con éxito
si todavía se está ejecutando y fracaso si ha terminado de ejecutarse y en realidad ha fallado.
Así que ahora hay tres cosas, ¿de dónde se devuelven realmente?
Pues bien, se devuelven desde el proceso que ocurre dentro de cada nodo y dependiendo del tipo
de nodo dependerá el tipo de proceso.
Así que vamos a bajar aquí y voy a añadir en un nuevo proceso de estado virtual pública y este proceso aquí, que es básicamente
sólo el nivel de nodo, porque vamos a anular todos estos, vamos
a devolver el éxito de punto de estado como un defecto para ese nodo en particular.
De acuerdo.
Así que guarda eso.
Ahora vamos a ir a nuestro árbol de comportamiento y darle un proceso.
Así que en el árbol de comportamiento, vamos a venir aquí y justo por encima
de todas estas cosas del árbol de impresión, vamos a poner en un proceso de estado de anulación pública así.
Ahora, no vamos a devolver lo que hace la base en este caso.
Lo que vamos a devolver en realidad en este árbol es lo que el hijo devuelve, porque recuerde que su árbol
de comportamiento tiene que ejecutar, sus hijos no se ejecuta.
Así que cada nodo, si tiene hijos, ejecuta los hijos.
Y en función de lo que los niños respondan, se convierte en ese estatus.
Así que aquí voy a ejecutar devolver a los niños el punto actual del niño.
Proceso.
Entonces, lo que devuelva, ese será el estado devuelto por el árbol de comportamiento.
Y esto en realidad hace que el árbol de comportamiento a continuación, ejecute el proceso de los objetos de los niños.
Ahora bien, en este caso, nuestros objetos hijos, si volvemos a nuestro ladrón, son ir a diamante e ir a Van.
Ahora, actualmente, si se ejecutan, son sólo nodos básicos, por lo que van a volver.
El éxito, que es bastante inútil para nosotros en este momento, significa que no están haciendo nada.
Así que tenemos que crear otra clase para las hojas o una hoja.
Así que volvamos a la unidad.
Vamos a hacer clic derecho hacia abajo en nuestro árbol de comportamiento, crear un nuevo script, vamos a llamarlo Leaf.
Entonces lo abriremos en el editor.
Ahora Leaf va a heredar de Node.
No va a tener un inicio en una actualización para que podamos deshacernos de eso.
Ahora, la hoja en sí, esto va a ser un poco más complicado porque las hojas tienen que ejecutar realmente
un proceso particular, lo que significa que va a haber algún método asignado a la hoja.
No sabemos cuál es ese método.
Podría ser cualquier cosa.
Así que en este caso, va a ser para un comienzo corriendo que los agentes establecidos destino.
Eso es lo que queremos que haga porque estamos usando una malla nativa.
Pero si estás usando algún otro tipo de IA en tu sistema, puede que quieras ejecutar una máquina de estado
finito o puede que quieras ejecutar una red neuronal o algo así.
Pero sea lo que sea que hagan esos procesos, deben terminar devolviendo uno de nuestros estados de nodo.
Así que, o éxito, o fracaso, o a correr.
Ahora lo que vamos a hacer con estos nodos hoja es crear un delegado para que podamos pasar a través de los métodos, por lo que podemos codificar los métodos
en otro lugar y luego pasar a través de ellos y decir, Esto es lo que queremos
que nuestra hoja para ejecutar.
¿De acuerdo?
Ahora la forma en que hacemos eso es crear un delegado público y va a devolver un estado de nodo.
Así que vamos a poner el estado y estos van a ser llamados una garrapata.
Así que una garrapata es esencialmente una rotación para su árbol de comportamiento.
Un tic es como un marco para el árbol de comportamiento, al igual que un marco ocurre cuando se ejecuta la actualización en la unidad.
De acuerdo.
Así que es una especie de, supongo, bucle alrededor de esa hoja o acción en particular en este caso, entonces necesitamos
un puntero para establecer.
Así que el método de proceso de tic público y esa es la forma en que lo hacemos allí.
Entonces vamos a anular nuestro proceso.
Así que public override status process de nuevo, nos deshacemos de esta base y en su lugar lo que vamos
a devolver es el método process y el método process, va a devolver status.
Así que esto es realmente trabajando para nosotros, siempre y cuando se establece con este método de proceso está aquí.
Así que aquí arriba podría poner si el método de proceso no es igual a null, podemos devolver eso.
De lo contrario, podemos devolver un fallo de punto de estado.
Oh, qué está haciendo este Pennie.
Comprobación de errores.
Sí, lo sé.
Es muy raro que lo haga, pero lo he hecho por ti ahí.
De acuerdo.
Y eso también te recordará si no has establecido un método para tu hoja.
Bien, ya lo hemos hecho.
¿Cómo conoce la hoja el método del proceso?
Bueno, podríamos ir en el comportamiento un comportamiento y, a continuación, realmente asignar allí.
Podríamos tener como ir al método de proceso de punto de diamante es igual a este método en particular o podríamos
pasar a través de hacer una anulación de nuestro constructor.
Así que queremos una hoja pública que no tenga casi nada.
Ese es nuestro vacío.
Y luego queremos una hoja pública y vamos a pasar por una cadena para el nombre
y luego queremos procesar el método p m.
Eso me gusta.
Y entonces vamos a sentarnos igual n y p m.
Método de proceso para igualar p m así.
Ahora, esto no es correcto.
Tiene que ser una garrapata así.
Así que lo pasamos.
Esto es, básicamente, es un puntero a nuestro método que estamos escribiendo, pasándolo a través de, y luego estamos configurando
hasta aquí.
Para que luego el método de proceso sepa dónde está aquí abajo y lo ejecute realmente por nosotros y deshagámonos de ese
punto y coma para que no le guste.
Bien, ahora guardaremos esto.
Volvamos a nuestro ladrón y pongámoslo en práctica.
Así que estos diamantes y furgonetas ahora se convierten en hojas en lugar de eso.
Y ahora están queriendo ser construidos de hoja y hoja y en realidad necesitan tener algún tipo de método
de paso también.
Así que seguiremos adelante y escribiremos algo realmente rápido que satisfaga eso.
Así que aquí abajo, vamos a crear un estado de nodo público.
Tiene que estar en el mismo formato en el que se construye la garrapata.
Así que vete al diamante así.
Y cuando vamos al diamante, en realidad queremos básicamente estar ejecutando esto aquí.
Así que saquemos eso de ahí y lo pondremos aquí.
¿De acuerdo?
Y luego tenemos que devolver algo.
Así que vamos a volver.
Y en este caso, que sea un éxito.
Así que devolveremos el estado del nodo punto, punto éxito.
Ahora note aquí que el retorno del éxito aquí realmente no tiene nada que ver con si su agente realmente
llegó al destino o no.
Porque en este momento no me preocupa mucho eso.
Sólo quiero algo que se pueda ver al correr.
De acuerdo.
Luego en su hoja de ir al diamante, vamos a pasar a través, ir al diamante.
Y ahora la furgoneta también necesita un método de paso.
Bien, ahora es el momento de un reto.
Lo que me gustaría que hicieras es escribir un método go to Van y configurarlo aquí con tu hoja y escribirlo de forma similar a lo que tenemos
para go to Diamond.
No lo hagas demasiado complicado.
Arreglaremos todo esto un poco más tarde.
Sólo queremos algo que funcione.
Así que sigue este formato aquí.
Poner en pausa el vídeo.
Ahora, cuando volvamos, te mostraré cómo hacerlo.
De acuerdo.
¿Cómo te fue?
Bueno, en realidad, lo único que tenías que hacer era coger esto, copiarlo y ponerlo aquí.
Llámalo, ve a la furgoneta y baja.
Y su destino fijado.
Sólo quieres poner furgoneta.
Y luego aquí arriba en su hoja, pondremos ir a la furgoneta.
Muy bien.
Así que antes de que podamos jugar, en realidad tenemos que arrancar el árbol con un proceso de la misma, ya que no es en realidad
la ejecución de su proceso.
Y si entramos en el código de nuestro árbol de comportamiento, verás que está preparado para ejecutar el primer hijo aquí en
proceso.
Pero no lo vamos a llamar.
Así que de vuelta en nuestro código en realidad tenemos que ir proceso de punto de árbol como que para poner en marcha todo el asunto.
Ahora echando otro vistazo a nuestro árbol, aquí está nuestro árbol.
Tenemos entonces un nodo intermedio que de momento es sólo un nodo genérico.
Lo modificaremos a otra cosa un poco más tarde, pero lo dejaremos en el Nodo cuatro.
Ahora, si entramos en Node y echamos un vistazo al proceso de los nodos, puedes ver que
va a devolver éxito, lo cual es un poco inútil para nosotros porque queremos que luego vaya y ejecute los eventos de sus hijos.
Así que en su lugar sólo voy a reemplazar esto aquí con el mismo código
que tengo en el árbol de comportamiento, que va a ser hijos punto actual.
Proceso.
Ahora, esto todavía no es perfecto, pero es suficiente para que parte de nuestro árbol funcione.
Así que guarda eso.
Guarde su comportamiento de la goma, y luego vamos a ir y pulse el botón de reproducción sólo para que pueda ver algo de trabajo al final
aquí.
Vale, genial.
Ya está.
Así que se va.
Ha pasado de la raíz del nivel superior del árbol al acero para ir al diamante.
Ahora, se va a detener allí.
No va a dar la vuelta y volver a la furgoneta, porque si echas un vistazo al código, sólo
estamos ejecutando el primer hijo de cualquier nodo en particular.
La furgoneta es un segundo hijo del acero, por lo que no está en marcha.
Y la forma en que actualmente tenemos nuestro código de malla naval para ir al destino no es realmente correcta
tampoco, pero al menos tienes algo que funciona que puedes probar.
Bien, esa es nuestra acción.
Lo que vamos a hacer cuando volvamos en la próxima conferencia es arreglar el código de la malla de navegación y poner
algún tipo de código adecuado para ir a Diamond e ir a Van.