En este punto, tiene todo un conjunto de comportamientos programados en su bot y lo que es realmente genial
de esto es que puede comenzar a combinarlos para obtener todo tipo de comportamientos y efectos complejos
de sus agentes.
Entonces, lo que vamos a hacer en este video es crear un pequeño escenario en el que la
goma se acercará sigilosamente al policía.
Pero cuando el policía mira hacia la goma, la goma se esconde.
Por lo tanto, es como si supieras acercarte sigilosamente a alguien y asegurarte de que puedes esconderte detrás de
las cosas si se dan la vuelta para intentar mirarte.
Entonces, lo primero que debemos hacer es averiguar cómo conoce el policía a los ladrones allí o cómo sabe el
ladrón que el policía los está mirando.
Bueno.
Entonces, descubrámoslo.
Objeto de policía que está aquí abajo ahora.
Él tiene un vector hacia adelante.
Bien, entonces hay vectores involucrados en esto nuevamente.
Y creo que estás apreciando cuánto hacen los vectores en el desarrollo del juego en cuanto a mover a
los personajes y averiguar dónde están las cosas, son geniales.
Y realmente necesita tener una comprensión profunda de los vectores porque es una cosa poderosa tener en
su kit de herramientas ahora.
OKAY.
Estamos mirando hacia adelante, este es el vector hacia adelante del policía, así que simplemente gírelo.
Entonces, si estaba mirando en esta dirección y solo golpeó el W. K. puedes ver que el vector orientado
hacia adelante es así.
Entonces, si él está mirando de esa manera, entonces podrías estar muy feliz de decir que puede ver al ladrón a pesar de que no
lo está mirando directamente.
Entonces, tenemos estos dos vectores, tenemos el vector directo que es la dirección de orientación para su policía.
Y luego también habrá un vector para el ladrón aquí.
Y entonces vamos a probar cuál es el ángulo entre la orientación hacia delante del policía y la dirección
hacia el ladrón real.
Ahora, si está dentro de un cierto rango, digamos 60 grados, podemos decir que está bien, el policía está mirando en
dirección al ladrón.
Por lo tanto, el ladrón en ese punto irá y se esconderá si no.
Entonces los policías miran hacia otro lado y se alejan.
Entonces el ladrón lo perseguirá.
Así que vayamos a nuestro código bot y comencemos a agregar esto en lo primero que necesitaremos es
otro método que le dice al agente si el objetivo puede verlos.
Así que crearemos otro pequeño método aquí que devuelve verdadero
o falso, así que bool y digamos que Target puede verme y para esto necesitamos resolver el vector tres para que Agent sea igual a este
punto transformar la posición menos la posición del objetivo Target dot transformar el posición, entonces podemos calcular el ángulo para que el ángulo
de flotación sea igual al vector 3, el ángulo entre el punto transformado objetivo hacia adelante y el agente 2 y luego
mover, digamos que si el ángulo de observación es menor que 60, volveremos verdadero, sí, podemos verte.
De lo contrario, vamos a devolver falso.
Todo bien.
Así que ese es el objetivo que puede verme.
Lo que hacemos ahora en nuestra actualización es usar eso en nuestra declaración if aquí.
Entonces puede ver Target y Target puede verme.
Luego iremos y nos esconderemos.
De lo contrario haremos una persecución.
Todo bien.
Así que guarda eso.
Volvamos a la unidad y presione play y veamos cómo funciona esto.
Así que actualmente estamos mirando al policía.
Entonces va a entrar duro.
Ahora, si me doy la vuelta y empiezo a alejarme, me perseguirá bien.
Tieso y vuelve por aquí.
Iré aquí y cuando llegue, me daré la vuelta e iré, oh, puedo verte.
Y él se va y se esconde detrás del árbol y me deja ahora mudarme aquí.
Y solo estoy tratando de que vaya y se esconda detrás de allí.
No puedo
Ahora que va a pasar.
Sigues mirándolo.
Él seguirá apareciendo a la vuelta de la esquina porque se está escondiendo y obviamente no puedes verlo.
Bueno, estás mirando en esa dirección.
Pero no puedes hacer eso, puedes verme pensar que eso va a hacer que se esconda.
Por lo tanto, él solo seguirá saliendo comprobando.
¿Está bien salir?
Si.
¿Está bien salir todavía?
Ahora, una vez que me dé la vuelta, él entrará y lo perseguirá.
Lo cual está bien.
Bueno.
Ahora es posible que realmente quieras que complete el escondite.
Entonces, si estamos aquí afuera y me doy la vuelta y lo veo y luego vuelvo otra vez, él vendrá y me perseguirá porque no
hay ningún tipo de retraso o enfriamiento en su acción y es posible que desee que realmente quiera que lo
haga. Haz eso.
Así que ahora pongamos eso en el código donde realmente vamos a terminar o no terminar.
Pero enfríe un comportamiento particular, lo que significa que si él lo ha visto, entonces simplemente va a correr y
esconderse.
Independientemente de si regresa de inmediato o no, así que colocaremos algo como usted sabe durante
cinco segundos, simplemente continúe ocultándose o ya sabe, continúe persiguiendo sin cambiar de un lado a otro porque estos se moverán
de un lado a otro. entre estos comportamientos basados en lo verdadero o lo falso.
Y si lo hacen, en realidad no le da tiempo para completar un comportamiento en particular y es posible
que desee que suceda bien.
Entonces, lo que vamos a hacer es agregar primero un nuevo valor de
bool nuevo que se llamará enfriamiento y lo configuraremos inicialmente como falso y luego hacia abajo en nuestra actualización.
Lo que vamos a hacer aquí es decir que si no nos estamos enfriando, podemos elegir un comportamiento.
Así que eso es solo esto.
Ahora, ¿cuándo se vuelve realidad el tiempo de reutilización?
Bueno, el enfriamiento se hará realidad cuando estemos ocultando.
Entonces, eso realmente pasará algún tiempo escondiéndose antes de salir de su escondite.
Entonces, aquí con este escondite inteligente después de que lo hayas ejecutado una vez que diremos que enfriar es igual a verdadero.
Como eso.
Ahora eso va a evitar que vuelva aquí.
Pero en algún momento tenemos que relajarnos con la gente para poder entrar y elegir un nuevo comportamiento.
Así que voy a tener un método invocado y entonces invocaré aquí el comportamiento.
Enfríe y lo haremos en unos cinco segundos.
Y eso significa que realmente necesitamos escribir este método.
Así que aquí arriba tendremos un comportamiento nulo.
Enfríe y todo lo que va a hacer es enfriarse es igual a falso y volver a establecerlo en falso.
Después de estos cinco segundos para nosotros.
Ahora, por supuesto, podría tener enfriamientos de comportamiento para los diferentes comportamientos.
Esto es solo genérico para todo.
Y podría tener otros comportamientos que está haciendo aquí con diferentes invocaciones del tiempo de reutilización
para completarlos.
Pero vamos a hacer cinco segundos aquí, lo que significa que una vez que vaya y active la ocultación si el policía
se da vuelta o no, todavía va a completar esa ocultación y se esconderá durante cinco segundos antes
de que incluso salga a revisar.
Todo bien.
Así que presionemos play y nos enfrentaremos a él inicialmente.
Yo digo que él va y se esconde.
Ahora, después de cinco segundos, volverá y comprobará si la costa está despejada.
Ahora vea cómo eso es un poco mejor que él rebotando hacia adelante y hacia atrás.
Entonces, si ahora me doy la vuelta cuando salga, pensará que está bien.
No no.
Usted me puede ver.
Voy a ir a esconderme de nuevo y
lo miraré cuando él venga a la vuelta de la esquina.
Ahí va y va a ir a esconderse y volverá otra vez
OK.
Entonces, esa es una forma muy simple de agregar algunos comportamientos realmente complejos a nuestro sistema simplemente agregando algunas declaraciones de
las condiciones cuando las va a ejecutar y ejecutando los comportamientos que ya hemos
escrito y simplemente combinándolos para obtener diferentes efectos