Hasta ahora, hemos agregado muchos comportamientos diferentes para nuestro pequeño agente y también tenemos la funcionalidad para dispararle y para
que su salud disminuya y su salud aumente, pero no la estamos usando
para nada.
Así que vamos y agreguemos algunos métodos de comportamiento más en nuestro script AI y luego construyamos árboles de
comportamiento para ellos.
Entonces, abramos la IA para
comenzar y agregaremos algunas tareas más.
Simplemente los pondré en
la parte inferior para mayor consistencia, realmente no importa en qué orden se encuentren.
Por lo tanto, queremos hacer que el bot sea lo suficientemente inteligente como para que sepa huir cuando está en
problemas y estará en problemas (obviamente) cuando su salud sea baja, pero también seguirá teniendo problemas si el jugador lo persigue o si el
jugador está lo suficientemente cerca de él
Por lo tanto, queremos poder probar esas condiciones, así como configurarlo para huir.
Debajo de aquí, agreguemos estos métodos.
En primer lugar, tengo un método llamado 'IsHealthLessThan' y aceptará un valor flotante de 'salud'.
Esta no es la salud que se almacena en la clase de agente.
Esta es la salud que atravesaremos desde nuestro Árbol de Comportamiento y la probaremos
contra la salud del agente.
Volverá a ser 'verdadero' si la salud del agente es menor que el valor que se está transfiriendo.
Por lo tanto, tenemos esta variable que podemos poner en el Árbol de comportamiento para cambiar el comportamiento
del agente.
Okay.
Por lo tanto, es posible que tenga la idea de que no quiere huir del peligro a menos que su salud esté
en 20 o que lo desee para que huya del peligro cuando su salud esté en 80, dependiendo de cuán sensible
sea y luego pueda tener diferentes para diferentes tipos de agentes.
Ahora, además de verificar la salud, también probaremos si el bot está en peligro
o no y el 'InDanger' está haciendo algo similar, tomando un valor que
proviene
del Árbol de Comportamiento a través de este flotador 'minDist' y lo probaremos contra la distancia entre el
jugador y el agente y si esa distancia es menor que minDist, entonces ESTÁ en peligro, todavía está dentro del alcance del jugador.
Finalmente, tenemos otro método llamado 'TakeCover' y lo que TakeCover va a hacer es resolver 'alejarse del jugador' y esta es
la misma lógica
(el mismo cálculo vectorial) que usamos en la huida de multitudes, donde obtenemos un vector no HACIA el
jugador sino LEJOS del jugador y luego lo
agregamos a la posición actual del agente y notamos que lo estoy multiplicando por 2.
Por lo tanto, irá dos veces más lejos del jugador de lo que está actualmente.
Una vez que tengamos un nuevo destino, podemos establecer el
destino del agente aquí y, como puede sospechar, usaremos el método MoveToDestination que escribimos hace un tiempo
y lo llamaremos para que el agente se mueva.
Así que esa es tu IA, guarda eso.
Ahora volveremos a Unity y crearemos un nuevo script. Así que simplemente duplicaré el guión de
Wander y llamemos a eso Huir. BT. Ábrelo y lo agregaré a mi colección de scripts que estoy obteniendo.
Ahora aquí, probaremos que la salud sea baja y probaremos si
estamos dentro de un cierto radio de peligro y luego también colocaremos nuestra 'secuencia' que necesitamos
para TakeCover y luego MoveToDestination.
Entonces se verá más o menos así.
'mientras IsHealthLessThan (40. 0) ', en
este caso y también' while InDanger (50. 0) ', por lo que todavía estamos a
50 distancia del jugador, entonces la' secuencia 'se ejecutará para' TakeCover 'y' MoveToDestination '.
Guarde eso y veamos cómo hace que nuestro agente se comporte.
Así que voy a seleccionar el agente y darle el nuevo guión de Flee ... arrastre y suelte eso en su comportamiento de Panda, presione Reproducir
y luego tendrá que ir al agente y comenzar a disparar sobre él para activar el script para que funcione porque necesita estar cerca de
él Y su salud necesita ser menor de 40. Entonces, mientras lo haces,
si vigilas su guión, verás cuándo se dispara.
Ahora, mientras el guión se mantenga por debajo de 40 para la salud, puede seguir disparándolo permaneciendo cerca de él y
siguiéndolo y descubrirá que el comportamiento en sí mismo hace que se aleje de usted.
Una vez que llegue a más de 40 nuevamente a medida que desaparece, todo se detendrá porque
está negando esta declaración while aquí y, por lo tanto, no puede continuar.
Por lo tanto, tendrías que dispararle nuevamente para que su salud sea inferior a 40, para que este árbol vuelva
a suceder.
Ahora, eso es todo lo que este agente está haciendo, no va a dar la vuelta y atacarlo de
regreso porque no tiene eso en este script en particular.
Otra cosa para la que podemos usar nuestro método IsHealthLessThan es para probar si nuestro bot ha muerto y
para eso necesitamos otro script de comportamiento.
Así que de nuevo, solo copiaré el Wander y llamémoslo Muerto.
BT y en lugar de una 'secuencia', tendremos un 'mientras IsHealthLessThan (0. 1) ', que es una salud muy, muy
mínima.
En ese caso, nuestro bot estará muerto.
Entonces, ¿qué hacemos con él cuando está muerto? Vamos a explotarlo.
'Explotar' no es un método que viene con el árbol de comportamiento y es algo que tienes que escribir tú mismo.
Así que guardaremos esto y luego volveremos a nuestro script de AI y agregaremos un método de 'Explosión'.
Lo haremos al final.
Entonces... 'Explotar'... todo lo que va a hacer es destruir el objeto del juego healthBar y luego
destruir el objeto del juego del propio agente (y luego desaparecerá del juego). Si quisieras un sistema de partículas con
efecto de explosión, lo agregarías aquí.
Nuevamente, este es un método de retorno de bool con un retorno de 'verdadero' y no hay razón por la cual esto no pueda usarse
como un 'vacío' con una Tarea. Actual. Tenga éxito, a menos que en algún lugar
de su árbol desee probar si se produjo la explosión y luego tratarlo de esa manera.
Ok, así que guarda eso, vuelve a Unity, obtén tu script 'Dead' y quieres adjuntarlo
como el Árbol de Comportamiento de tu Droid. Pongámoslo allí y luego presionaremos Reproducir y vendremos y dispararemos hasta que su
salud baje a 0 para probarlo. Entonces... dispara y luego se va.
Así que esa fue la explosión.
Todos los árboles de comportamiento que hemos creado están bien por sí mismos, pero cuando realmente entran en juego
es cuando los unimos y hacemos un árbol de comportamiento mucho más complejo para
representar todo el comportamiento de nuestro agente y nosotros ' Lo haré en la próxima conferencia.