Ocultarme tiene que ser uno de mis comportamientos favoritos porque es un poco astuto y también
puedes crear cosas que no solo intentan esconderse de un personaje en particular, sino que se esconden
a medida que se acercan sigilosamente. esconderse y perseguir lo que te da dinámicas realmente interesantes en un entorno
de juego.
Entonces, para hacer esto, en realidad es bastante simple.
Pero hay mucho trabajo involucrado.
En primer lugar, necesita un montón de obstáculos detrás de los cuales su agente puede esconderse.
Así que tenemos nuestro árbol que ha estado sentado allí todo el tiempo.
Vamos a usar eso ahora para descubrir dónde es el mejor lugar para esconderse si el hule se va
a esconder del policía.
Entonces, lo que hacemos es obtener un vector del policía al árbol y seguir pasando por el
centro del árbol hacia el lado opuesto, lo que significa que si estás en el lado opuesto exacto del árbol del
policía, entonces estás obviamente escondido del policía porque si intentaras hacer un yeso del policía al hule o del hule
al policía no podrían verse porque golpearía el árbol y
por lo tanto estás oculto.
Entonces, antes que nada, lo que tenemos que hacer es definir cuáles son todos los escondites en el mundo real.
Entonces, de vuelta en nuestro entorno, si echamos un vistazo a la jerarquía debajo del objeto Entorno, encontrará el
objeto del árbol que ha estado allí durante bastante tiempo.
Y si hace clic en él, verá que está etiquetado con la etiqueta ocultar en minúsculas.
Ahora, si el tuyo no es debido a la forma en que se importó, asegúrate de crear una
nueva etiqueta y configurar el árbol para que se oculte, y luego podemos usar esa etiqueta de ocultación para cualquier objeto que quieras poner en
el entorno para esconderte detrás .
Recuerde también que el árbol es una estática de navegación.
Bien, eso significa que aquí lo tenemos configurado para navegación estática.
Y cuando luego rompamos nuestra malla de navegación, excluirá el árbol.
Entonces, si simplemente presionamos hornear y haremos un horneado rápido para nosotros, encontraremos que ha sido eliminado como un lugar en el
que puedes pararte.
Entonces, si va y agrega varios árboles, siempre regrese y haga este horneado en su navegación.
Bien, ahora que tenemos eso, también queremos hacer que el árbol sea un colisionador.
Ahora no porque queremos que nuestro personaje choque con él, sino porque en algún momento queremos poder
lanzar un rayo y ver si podemos ver al policía, así que seleccione el árbol y vaya al componente de adición del inspector.
Y voy a agregar un colisionador.
Queremos agregar un colisionador de cajas que sea solo porque será simple.
Ahora con ese árbol, obtendrá un colisionador de cajas que se ubica perfectamente alrededor
de ese árbol que podrá ver en la misma vista si tiene algún otro objeto y no se
ajusta perfectamente, entonces es posible que solo desee ajustar el centro y el tamaño en el inspector de ese colisionador.
Y ahora que tiene este árbol con la etiqueta y el cuarto, esencialmente puede
hacer una prefabricación o copiarlo, pegarlo o duplicarlo en el entorno y luego tiene muchos lugares para esconderse.
Correcto.
Así que tenemos todos estos escondites.
Tenemos uno en este momento.
Siempre es bueno probar con una sola cosa para que podamos descubrir qué salió mal si es así.
Necesitamos recoger todos estos árboles al comienzo de presionar play.
Así que voy a crear un singleton y voy a llamar a
ese Singleton el mundo y mantendrá todas nuestras posiciones ocultas.
OKAY.
Así que llamémoslo mundo y entremos aquí.
Ahora, lo que vamos a hacer con esto no es convertirlo en un comportamiento moral.
Vamos a deshacernos de eso y lo haremos una clase sellada pública
y luego crearemos una instancia de mundo privada de solo lectura estática que será igual a un mundo nuevo y también crearemos una
matriz de objeto de juego estático privado que mantendrá todo sobre obstáculos y los llamaremos escondites como ese.
OK, entonces crearemos todos nuestros constructores de modo que el mundo estático y en
este constructor realmente va a atravesar el mundo y tomar todos los escondites.
Por lo tanto, ocultar puntos es igual a los objetos del juego.
Asegúrate de que sean los objetos finos del juego con una s para que obtengas toda la matriz.
Y los queremos con etiquetas con Hide, todas en minúsculas.
OKAY.
Entonces, necesitamos terminar nuestro Singleton del mundo privado, que está básicamente vacío y es
una instancia de mundo
estático público con una entrada allí.
Entonces, obtenga una instancia de retorno, será una r
minúscula porque estamos hablando de esta aquí.
YO.
Y luego también tendremos otro método de objeto de juego público Array que obtiene los escondites.
Entonces tengo escondites y ahora nunca volveré a esconderme.
Ahora eso significa que este objeto va a ir a buscar todos los escondites y cualquier agente en
el medio ambiente solo tiene que pedirle al mundo desde el mundo Singleton y no tienen que seguir obteniéndolo todo
el tiempo.
OKAY.
Así que guarda eso.
Y ahora volvamos a la unidad.
Lo siguiente que vamos a hacer es cambiar nuestro bot para que ahora oculte.
OKAY.
Abra su script de bot y ahora agreguemos un método de ocultación.
Así que aquí abajo vamos a poner
a Boyd hide ahora, lo que hide necesita hacer es encontrar el mejor escondite.
Ahora ese puede ser el escondite más cercano si quieres que se escondan muy rápido o puede ser el escondite más
alejado.
En este caso, encontraremos el escondite más cercano al agente e iremos a escondernos allí.
OKAY.
Entonces, necesitamos un valor de distancia para mantener la distancia en la que estamos comparando cosas nuevamente.
Así que inicialmente establezcamos eso en matemáticas si el punto es infinito para que sea realmente muy grande y que cualquier cosa con la
que lo compares sea más pequeño.
Y luego necesitamos un vector tres para nuestro lugar elegido.
E inicialmente lo estableceremos en el vector 3 0.
OKAY.
Luego vamos a recorrer todos los escondites con un bucle for.
Entonces, para int i es igual a cero, es menor que el punto de instancia de punto mundial.
Luego, vamos a crear un vector tres que será nuestra dirección oculta y que será igual
a l árbol.
Entonces, nuestra instancia de punto mundial para obtener puntos de ocultación o paréntesis de puntos I transforma la posición del punto menos la posición transformada del
punto objetivo.
Entonces este es el vector de la copa al árbol.
Bien, entonces el vector tres para nuestra posición de ocultación será igual a la misma cosa nuevamente, así que voy a tomar toda
esta posición del árbol, así que esa es la
posición del árbol.
Entonces, lo que vamos a hacer es agregar un poco más de espacio para que pases el
árbol, así que para eso simplemente agregas el vector de alta dirección y queremos normalizarlo para que la versión normalizada sabemos la
longitud de uno y luego podemos establecer una distancia detrás de ese árbol
que queremos ocultar.
En este caso, nos vamos a esconder a una distancia de cinco detrás del árbol y puedes jugar con eso
dependiendo de qué tan cerca quieras estar de ese árbol en particular.
Y en realidad mejoraremos este algoritmo más adelante y eliminaremos esos 5.
Pero por ahora vamos a configurarlo a cinco.
Bueno.
Entonces lo tenemos.
Ahora lo que vamos a hacer es verificar si el próximo árbol que aparece está realmente más cerca.
Y si es así, lo utilizaremos como nuestro lugar elegido.
Bueno.
Entonces, si el vector 3 distancia este punto, transforma la posición del punto, oculta.
Pausa.
Entonces, esta es la distancia entre nuestro agente y la posición de escondite si eso es menos que dist, entonces ahí
es donde vamos a escondernos.
Así que aquí colocaremos el punto elegido igual a
ocultar pausa y luego actualizaremos la distancia.
Entonces, la distancia será igual al vector a través de una distancia aquí que acabamos de probar.
Así que toma eso y ponlo allí.
Así que ahora será la distancia al árbol más cercano que hemos encontrado hasta ahora.
Bueno.
Y luego terminaremos nuestro bucle 4, esto debería ser diferente a lo que se actualizó, así que ahora que tenemos que podemos ir al destino del
conjunto de puntos del Agente al lugar elegido y si realmente queremos ser consistentes que hacer eso porque
eso es lo que está haciendo sik de todos modos, solo usaremos buscar en
caso de que hagamos algo diferente para buscar.
OKAY.
Así que esa es nuestra piel.
Muy sencillo cuando lo piensas, dilo.
Ahora lo que vamos a hacer es en nuestra actualización, configuraremos esto para que se oculte bien.
Así que vamos a guardarlo.
Ahora volvamos a la unidad y estamos casi listos para jugar y probar esto.
Así que presiona play y nuestro agente se va y se esconde detrás del árbol.
Correcto.
Entonces, si me mudo aquí, él irá allí y si me mudo nuevamente, él irá allí.
Así que él se esconde constantemente detrás del árbol, lo cual es muy bueno para nosotros.
Pero si piensa en el procesamiento que está ocurriendo ahora, el algoritmo de ocultación ejecuta cada actualización.
Si ya está oculto del policía, entonces no necesitamos seguir ejecutándolo hasta que llegue un punto en el que
ya no esté oculto y lo arreglaremos en el próximo video.
Pero por ahora es probable que desee agregar algunos árboles más para ver cómo funciona esto, así
que vamos al medio ambiente y tomemos el árbol que tiene.
¿Voy a ir a controlar D.
Presiona la tecla w y luego haz un nuevo árbol y muévelo.
Control D.
Muévelo alrededor del troll D allí.
¿Y qué dije que tienes que recordar?
¿Tiene que ir a una navegación y debe recordar andar en bicicleta para asegurarse de que lo haya hecho para
la nueva malla de navegación? Bien, presione Reproducir ahora, vaya a esconderse detrás de ese árbol porque en realidad es el más cercano
y usted realmente puedo ver eso.
Y ahora, debido a la forma actualmente programada, es posible que no pueda ir
a un árbol diferente dependiendo de si puede encontrar uno más cerca.
No.
Ahora, una forma de hacerlo es si volvemos al código bot y recordamos estos 5 pequeños que indicamos
a qué distancia estamos del árbol.
Si nos escondemos detrás de un árbol a cierta distancia de ese árbol y luego esa distancia termina estando más
cerca de otro árbol más adelante, él se moverá.
Así que vamos a actualizar esto a digamos 10, que creo que probablemente va
a estirar un poco las cosas hasta la distancia, pero solo presionemos play y se esconderá detrás de ese árbol porque lo más cercano, pero él irá
a una distancia de 10.
Así que vamos a bajar esto, puedes ver que ahora está aquí, así que
voy a perseguirlo con mi policía y espero que lo presiones.
Ahora se va y se esconde detrás de ese árbol a una distancia de 10.
Entonces, si regreso aquí y lo obligo a cruzar el otro lado a una distancia de 10, no sé a cuál
estar más cerca.
Sí, ese de allí.
OKAY.
Entonces se fue por allí.
Ok genial.
Y puedes ver que una distancia de 10 de esconderse detrás de un árbol parece un poco antinatural.
Porque si te escondieras detrás de un árbol, serías criado contra el árbol.
Y como dije, lo solucionaremos.
Bueno.
Ese es el método básico de ocultar.
Volveremos en el próximo video en la parte 2 y realmente mejoraremos eso.