Hasta ahora hemos construido todos los nodos fundamentales para un árbol de comportamiento.
¿No es asombroso lo sencillo que es realmente lo que hay debajo y cómo se puede construir una estructura de comportamiento
muy compleja con ellos?
Así que hemos mirado los nodos de la secuencia ahora se denotan por una flecha que he puesto
aquí, y los hijos de la secuencia cada uno se ejecuta hasta que uno de ellos falla.
Así que es como acabar con ellos juntos en una declaración final, siempre empezando por el primer hijo que
entra en esa lista de hijos y trabajando a través de ellos en orden.
Ahora también hemos creado un nodo selector y el selector le permite tener múltiples hijos de nuevo y trabajará a través
de ellos, pero sólo uno de ellos tiene que ser exitoso.
Así que si el primero tiene éxito, devolverá el valor a su padre.
Si no, continúa con el siguiente de la lista y lo ejecuta en su lugar.
Así que es una especie de cuando usted está haciendo una selección entre múltiples acciones que tipo de todos los resultados en el mismo tipo
de cosa que hemos hecho con estas puertas.
Así que podrías tener como diez puertas en esa galería y el agente podría realmente atravesar y comprobar
todas esas diez puertas, si tuviera que hacerlo, para entrar.
E incluso podría incluir ventanas.
Podrías trepar por una ventana si no puedes entrar por una puerta, algo así.
Pero sólo necesitamos que uno de ellos tenga éxito para que siga intentando robar el diamante.
Ahora, lo que vamos a hacer es echar un vistazo a otro tipo de nodo, que es una
condición, y la condición es realmente otra hoja como una acción.
Pero en realidad es mucho, mucho más simple porque en lugar de hacer cualquier proceso en particular, es sólo
la prueba de un determinado valor.
Así que lo que vamos a hacer es que puedes ver que he añadido a este árbol es añadir una condición
al principio de la secuencia de acero para hacer que el agente vaya a robar algo si no tiene suficiente dinero.
Pero si tiene suficiente dinero, no va a hacer nada.
Así que la condición en este caso es comprobar si el ladrón tiene suficiente dinero.
Así que vamos a empezar en el código añadiendo en una propiedad para almacenar el dinero de los agentes.
Así que si volvemos al comportamiento de los ladrones en estas propiedades, voy a añadir una propiedad para el dinero.
Es casi como un sistema de inventario, supongo.
Muy simple, por supuesto.
Así que voy a hacerlo para que podamos deslizarlo en el inspector.
Así que el rango para la cantidad de dinero, vamos a ir de 0 a 1000 y entonces esto será un int público y lo llamaremos
dinero.
Y digamos que para empezar hay 800.
Así que mientras tenga más de, digamos, 500 dólares, no irá a realizar el robo.
Pero si cae por debajo de eso, irá y lo hará.
Muy bien.
Así que ahí está nuestro inventario ahora.
Nuestra condición es que haya más de 500 dólares ahí.
Así que tenemos que crear este nodo hoja ahora, una hoja.
Si bajamos un poco, una hoja es un nodo con un nombre, pero también un método adjunto.
Así que tenemos que crear un método que compruebe el dinero.
Ahora que es muy, muy sencillo porque ya estamos creando todos estos métodos aquí.
Y esencialmente son una especie de prueba para ver si una tarea ha terminado de ejecutarse, pero sólo estamos haciendo una simple
comprobación.
Así que aquí, sólo voy a tomar tal vez este, el más simple que tenemos, y yo podría
poner esto aquí arriba y vamos a llamarlo tiene dinero.
Y dentro de aquí, vamos a volver.
En primer lugar, si el dinero es mayor o igual a 500, entonces volveremos.
Punto de nodo.
Punto de estado.
El éxito.
O en nuestro lenguaje de programación eso sería un verdadero.
De lo contrario, vamos a devolver el valor del punto de estado del nodo.
Así que este es un nodo que no tiene un estado de ejecución porque la lógica sólo se realiza y luego devuelve
el éxito o el fracaso.
Ahora bien, como está en una secuencia, si tiene dinero eso devuelve el éxito y eso permite que esa secuencia siga funcionando.
Si no lo hace, es un fracaso y por lo tanto no lo hará.
Y me acabo de dar cuenta de que los tengo mal colocados.
Si tiene dinero superior a 500, entonces en realidad queremos fallar porque esta es una condición en la que tiene menos
de 500 con el fin de desencadenar.
Así que queremos que tenga éxito cuando sea menos que eso.
Así que pon esto.
De acuerdo.
Sí.
Tengo mi lógica ahora mismo.
Así que ahí está mi tiene dinero, así que vamos a ahorrar eso.
Así que vamos a subir aquí y crear esa hoja para tener dinero.
Así que voy a poner que realmente no importa donde lo ponemos aquí.
Hoja.
Tiene dinero es igual a nueva hoja tiene dinero y luego aquí tiene dinero.
Entonces con esa hoja podemos ponerla en nuestra secuencia de acero como lo primero porque es lo que va a desencadenar para
empezar, o ni siquiera va a desencadenar.
Sólo se detendrá la secuencia si el dinero está por encima de 500.
Así que vamos a poner punto de acero añadir niño.
Y vamos a añadir en tiene dinero allí.
Ahora, lo último que tenemos que hacer es bajar a nuestra actualización donde realmente estamos ejecutando nuestro árbol,
porque nuestro árbol aquí va a decir si se está ejecutando, entonces procesarlo de nuevo, procesarlo de nuevo y procesarlo de nuevo hasta
que se detenga.
Pero echemos un vistazo a lo que sucede si guardo esto y vuelvo a mi back into unity.
Ahora encontramos a nuestro ladrón en el inspector.
Puedes ver que hay un control deslizante para el dinero, así que vamos a pulsar el play.
Y ahora no va a hacer nada para empezar porque ha sido detenido por esa nueva condición.
Lo que esperaríamos es que si bajamos esto por debajo de 500, debería empezar a hacer algo, pero no lo hace.
Así que lo que realmente ha sucedido aquí es que en esa actualización para el estado del árbol de ejecutar el árbol,
el árbol se ejecuta a través de una vez porque tiene suficiente dinero.
Toda esa secuencia falla y no vuelve a intentarlo porque esto es sólo como una pasada
por el árbol.
Va a seguir procesando el árbol mientras se ejecuta.
Y una vez que obtiene un fallo o tiene éxito en este caso obteniendo realmente un fallo, entonces no se va a molestar
en hacerlo de nuevo.
Así que nuestra condición para ejecutar nuestro árbol una y otra vez ha cambiado.
En su lugar, queremos decir que si el estado del árbol no es igual a éxito, entonces vamos a ejecutarlo
de nuevo.
¿De acuerdo?
Y lo que quieras con tus comportamientos particulares, con tus árboles y cómo quieras que funcionen, algunos
árboles se ejecutarán una y otra vez.
Algunos se ejecutarán sólo una vez.
Tienes que poner la lógica aquí para asegurarte de que es así y luego puedes activarlos en otra parte.
Es decir, podrías cargar un árbol durante el tiempo de ejecución para ponerlo en tu agente cuando alguna otra condición o alguna otra
escena se cargue o algo así.
Podría ser un árbol de comportamiento completamente diferente.
Bien, así que guardaremos eso, volveremos a la unidad y ahora vamos a pulsar el play.
Y ahora tiene 800.
Voy a deslizar ese dinero en el inspector por debajo de 500 y mira lo que pasa.
En cuanto baje, va a ir a actuar lo que estaba pasando antes.
Así que va a dar la vuelta y va a seguir ejecutando eso, y luego va a volver al vehículo,
que es donde todo termina y.
Así que esencialmente ha robado el diamante porque quiere que su dinero suba.
Cuando vuelve a la furgoneta, actualmente, no va a subir porque no hemos codificado
eso.
Así que voy a dejarlo como un reto para ti.
Lo que me gustaría es que tuvieras el dinero aquí.
Así que la cosa del dinero que hemos creado en nuestro script para aumentar en valor cuando él consigue el diamante de nuevo
a la furgoneta y en ese momento puede dejar el diamante en la furgoneta y para señalar que sólo puede destruir el objeto
de diamante porque no es necesario más.
De acuerdo.
Así que ponle pausa al video ahora.
Hazlo.
Cuando volvamos, te mostraré cómo hacerlo.
De acuerdo.
Bienvenido de nuevo.
¿Cómo te fue?
Bien, volvamos a nuestro código para saber que está recogiendo el diamante.
Sabemos que lo está llevando a la furgoneta y lo está llevando a la furgoneta aquí arriba.
Ir a la furgoneta.
Así que cuando go to Van tiene éxito, lo que significa que lo ha completado, es cuando quieres vender el diamante
y añadir el dinero.
Ahora, para hacer eso, necesitamos una lógica muy similar a la que hemos hecho con Go to Diamond.
En realidad ejecutamos esto, ir a la ubicación y luego esperar a que se convierta en éxito y luego hacer
nuestra lógica aquí abajo.
Así que básicamente voy a copiar esto de aquí.
Pongamos esto en nuestra furgoneta y tenemos que ir a la ubicación, que será Van aquí.
Y no vamos a ponerle la furgoneta al agente en este momento.
Así que vamos a la furgoneta.
Lo que queremos hacer aquí es poner dinero más iguales.
¿Cuánto va a valer ese diamante?
Digamos que 300 dólares.
Y entonces podemos deshacernos del diamante por completo, por lo que podríamos ir punto de diamante conjunto activo a falso.
Así que sigue estando ahí, pero lo hemos hecho algo invisible y lo hemos sacado de la ecuación.
Vale, nos lo guardaremos.
Volvamos a la unidad y probemos eso.
Así que pulsamos el play.
Todavía tiene 800 dólares.
Y voy a ponerlo justo por debajo de 500 para activar ese comportamiento.
Y luego se va, va a buscar el diamante.
Y una vez que lo lleve a la furgoneta, deberíamos ver cómo sube el dinero.
Así que en cuanto tenga ese diamante, podemos empezar a vigilar en el inspector para que suba el valor
del dinero.
Y al mismo tiempo, notarás que el diamante va a desaparecer por completo de tu jerarquía de objetos
del juego.
Así que en realidad, voy a verlo primero.
Va a volver aquí a la furgoneta.
El diamante desaparece y vamos con el inspector y su dinero ha subido.
Fantástico.
Bien, ya lo has hecho.
Y aunque no lo creas, ya has cubierto todos los nodos fundamentales que componen los árboles de comportamiento.
Ahora ya tienes suficientes conocimientos y habilidades como para tomar esto y hacer un poco de búsqueda
en Google sobre los árboles de comportamiento para echar un vistazo y obtener más ideas sobre cómo otras personas han ampliado los
nodos.
Así que no tengas miedo de añadir incluso más nodos a tu sistema que hagan otras cosas.
Sólo asegúrate de que siempre te ciñas a ese flujo de control para devolver el éxito, el fracaso o la carrera.