En esta conferencia, veremos el Nodo Selector. El Nodo Selector le permite tener muchas
hojas diferentes debajo de él, pero solo elija de 1 hoja.
Ahora puede hacerlo al azar o puede hacerlo al azar con una cierta probabilidad de
que sea elegido.
Haremos un ejemplo en el que vamos a hacer que nuestro bot entre en estado inactivo, donde solo mira
alrededor de su entorno girando sobre el terreno. Para que funcione, necesitamos agregar un nuevo método.
Entonces, en la clase de IA, vamos a agregar esta tarea llamada 'Girar' y le daremos al bot un ángulo para
girar y luego calcularemos un nuevo objetivo para observar según ese ángulo de giro. Entonces agregamos el ángulo de
giro que está usando este Quaternion. Método AngleAxis girando a través de un ángulo alrededor del eje ascendente desde
nuestra dirección hacia adelante
y eso le da un vector que puede agregar a su posición, que estará un punto alejado de usted pero en
ese ángulo.
Entonces, al establecer eso como el objetivo, le dará al bot algo a lo que dirigirse.
Al igual que cuando apuntamos al jugador aquí arriba, pero en
cambio le estamos dando un ángulo real para girar.
Entonces ese es el turno. Eso es todo lo que necesitamos hacer con nuestro código antes de poder usar este próximo árbol de comportamiento.
Entonces, crear un nuevo árbol de comportamiento llamado 'LookAround' y esto es
lo que tengo en el mío.
Entonces este LookAround. El archivo BT tendrá una 'secuencia' y esa secuencia será un Nodo
Selector aleatorio, luego el LookAtTarget y luego el WaitRandom. Bajo el nodo selector 'aleatorio', tiene 4 versiones posibles diferentes
del giro para que podamos girar 90 grados, podemos girar -90 grados, podemos girar 145 grados o podemos
girar -27 grados y tenerlos bajo 'aleatorio' significa que cada vez que
se ejecuta esto, solo uno de estos se selecciona y es la dirección a
la que debe dirigirse.
Luego, el LookAtTarget girará el bot hacia esa dirección en particular y luego, después
de eso, tenemos un WaitRandom.
Ahora el WaitRandom es similar al Wait que hemos visto antes que viene con nuestro
sistema Behavior
Tree pero puede darle 2 valores aleatorios y elegirá una cantidad de tiempo aleatorio para esperar entre esos 2 valores.
Por lo tanto, podría esperar a 2, podría esperar a 3, podría esperar a 4. 5)
Solo te dará un poco de variedad en eso.
Entonces, solo guarde eso y luego lo que desea hacer es seleccionar su Droid y asegurarse de arrastrar
y soltar su Árbol de Comportamiento LookAround sobre él. Comprueba entonces que tienes el bonito script rosa con los parámetros rojos,
lo que significa que
todo está listo, tienes todo definido en el script y luego presiona Play.
Ahora, si observa su Árbol de Comportamiento (actualmente el mío está esperando, ahí va), se convertirá en aleatorio y luego
verá que elige uno de los diferentes turnos para tomar y es completamente aleatorio, por lo que no sabe
cuál vas a obtener
y el bot se volverá hacia él y puedes ver por el comportamiento del bot, que es
como un estado inactivo, él solo está mirando a su alrededor.
Entonces eso no es tan malo. Si desea forzar que un nodo en particular ocurra más veces que otra
cosa, lo que puede hacer con el nodo aleatorio (si abrimos nuestro script nuevamente) es colocar valores ponderados después de él, para cada
uno de estos.
Entonces, si desea que el primero suceda primero (y principalmente), configuremos eso en 5 y luego el resto
en 1.
Estos son solo valores ponderados, no son un porcentaje de probabilidad ni nada.
Entonces, el que tenga un número más alto, sucederá con más frecuencia.
En este caso, la primera (Turno 90) sucederá cinco veces más de lo que ocurrirá con el 1 debido
a esta ponderación aquí.
Así que no te preocupes por hacer que sumen 100 o algo así. De vuelta en Unity, presione Reproducir y eche
un vistazo a cómo selecciona qué turno usar en el Inspector y verá que con mayor frecuencia elige el primero y
continuará haciendo eso mucho más que los
demás, lo que será en igual ponderación y eso es prácticamente todo lo que hay para los nodos selectores.