Bienvenidos de nuevo a la segunda parte de la producción del comportamiento de la piel.
De acuerdo.
Así que hasta ahora tenemos a nuestro agente y nos las arreglamos para ponerlo al otro lado de un escondite,
en este caso el árbol, y luego empujarlo a una cierta distancia a lo largo del vector.
Eso es desde el policía hasta el árbol y más allá, ya sabes, para una distancia de dos o una distancia de cinco o una
distancia de diez.
Ahora bien, ¿qué ocurre si acabas con objetos de diferentes tamaños?
Pues bien, la posición desde la que medimos el vector policía y a través de él es el centro del propio modelo.
Y el centro del árbol en este caso está en el centro de su base.
Ahora va a trabajar para el árbol.
Pero, ¿qué sucede cuando queremos proyectar a otra cosa un poco más grande y decimos que todavía queremos ir a una distancia
de dos?
Bueno, no podemos hacer eso.
Obviamente, si algo es como un tamaño de diez, sería el punto estaría dentro de nuestro objeto de ocultación y por lo tanto
no sería capaz de calcular para la red de malla.
Y como hemos visto antes, a la malla no le gusta tratar de establecer posiciones para sus agentes para puntos
que no existen en la malla.
Y en otros casos, cuando tu agente no puede llegar a su destino, si tienes un código
que tiene que lidiar con eso, entonces nunca podrás llegar a tu escondite para continuar y hacer
otra cosa.
Entonces, ¿cómo se arregla esto?
Bueno, ¿recuerdas el colisionador de cajas que pusimos en el árbol?
Ahí es donde entra en juego.
Lo que vamos a hacer es lanzar un rayo desde la copa a través del árbol y luego lo que vamos
a hacer es averiguar dónde ese rayo se cruza con el otro lado del colisionador.
Así que el colisionador que está en la parte posterior del árbol porque es básicamente donde su agente puede ir y estar
de pie.
Y eso es lo más cerca que el agente puede estar del obstáculo o del escondite sin estar dentro
de él.
¿Cómo lo hacemos?
Bueno, en realidad no es tan fácil como parece, porque puedes lanzar un rayo, puedes hacer un lanzamiento
de rayo y golpear un colisionador en el lado frontal, pero no puedes hacerlo en el otro lado mientras está viajando a través.
Así que cuando sale del colisionador, no hay forma de detectarlo.
Así que lo que tenemos que hacer es tomar nuestro rayo y empujarlo a través del colisionador.
Y cuando salga por el otro lado, queremos darle la vuelta y devolverlo.
Y luego, donde sea que golpee en el otro lado mientras regresa, ahí es donde calculamos nuestro
punto de escondite sabiendo que ese punto va a estar justo contra nuestra malla o nuestro punto de escondite de obstáculos, árbol, lo que sea que
estemos usando como nuestro punto de escondite.
Así que vamos a ponerlo en práctica.
Volvamos al código de nuestro bot.
Vamos a, en primer lugar, agarrar todo el cuero y copiar y pegar porque es nuestra base sobre la que
queremos construir y vamos a llamar a esto algo diferente.
Así que llamémoslo escondite inteligente.
Así que tienes dos copias de una mecánica de ocultación si quieres usarlas, y luego pondremos una ocultación inteligente
aquí también.
Para que podamos ejecutar este.
Ahora, lo que queremos hacer es seguir encontrando el árbol más cercano.
Así que tenemos el material adecuado aquí.
Pero lo que tenemos que hacer después de que tenemos el árbol más cercano es agarrar nuestro vector a ese árbol más cercano, darle la
vuelta y hacer un lanzamiento de rayos desde él antes de establecer nuestra búsqueda.
Así que las cosas que vamos a tener que recordar de haber pasado por este bucle for son el punto elegido,
que ya tenemos.
También debemos recordar la dirección elegida.
Así que el vector tres dirección elegida que será igual.
Vector 3. 0.
Y también queremos obtener el objeto de juego que estamos recordando.
Así que un objeto de juego elegido geo, que es el árbol o lo que sea que ha elegido para esconderse detrás.
Así que.
Bueno, punto ejemplo, punto obtener ocultando puntos y vamos a establecer que a la primera de modo que básicamente
hemos inicializado a algo.
De acuerdo.
Así que dentro de esto, si las declaraciones donde elegimos el que actualmente pensamos que es el más cercano después
de Chosen Spotless, sólo registrar nuestra dirección elegida.
Así que nuestro ciervo elegido va a ser nuestro ciervo escondido y entonces nuestro objeto de juego elegido será este escondite
del mundo en la posición I.
Muy bien.
Así que ahora que tenemos estos valores, vamos a bajar antes de nuestra búsqueda y hacer nuestra pequeña
clase de REI para averiguar dónde está el punto detrás del árbol o detrás del colisionador donde podemos ir y sentar a nuestro agente a continuación.
En primer lugar, vamos a coger el colisionador que está en el objeto.
Así que vamos collider ocultar col es igual al objeto de juego elegido punto obtener componente.
Collider.
Ahora estamos haciendo un componente aquí que no es la cosa más optimizada para estar corriendo, pero realmente
no hay otra opción de dónde poner eso.
Supongo que podrías ir a través de todos los objetos del mundo a medida que los vas creando en tu
matriz del mundo aquí y mantener otra matriz de sólo los colisionadores a utilizar.
Pero también recordamos que vamos a asegurarnos de que no lo hagamos todo el
tiempo.
Así que no debería ser demasiado pesado para tu sistema.
Bien, ahora tenemos nuestro colisionador.
Vamos a crear nuestro rayo que vuelve en la otra dirección.
Así que vamos a llamarlo nuestro rayo trasero y eso va a ser igual a un nuevo rayo.
Desde el lugar elegido.
En la dirección negativa elegida
y necesitamos normalizarla porque el rayo posterior necesita una dirección normalizada.
Así que ahora volvemos en la otra dirección.
Ahora, lo que tal vez quieras hacer también es con este de aquí es empujar hacia afuera este rayo que estás atravesando porque estás creando
este escondite a una distancia de diez y luego dar la vuelta y volver por el otro lado.
Ahora bien, si resulta que tu objeto es mucho más grande que la distancia de diez que hay que atravesar, igual vas a terminar
sentado en el centro del mismo.
Y cuando hagas una proyección de vuelta hacia el otro lado, no habrás regresado y golpeado el otro lado.
Así que tendrás que hacer algunas pruebas con eso.
De acuerdo.
Así que lo siguiente que vamos a hacer aquí es que vamos a crear un molde de rayo, pulsa info.
Y vamos a crear una distancia flotante de lo lejos que queremos proyectar nuestra prueba clasificada si hemos
golpeado algo.
Así que vamos a decir 100, que es una manera justa de proyectarlo y asegurarse de que esta distancia aquí es definitivamente
más largo que esta distancia aquí.
De lo contrario, si proyectas esto como para una distancia de uno, porque esto está a diez de distancia aquí arriba,
nunca va a golpear y terminarás golpeando nada.
Así que mira eso.
De acuerdo.
Así que ahora hacemos nuestro carbón de ocultación, por lo que es nuestro punto más limpio refundido y estamos utilizando la información de rayo hacia atrás y la
distancia.
De acuerdo.
¿Y qué obtenemos de eso?
Bueno, tenemos el punto de golpe en la parte posterior, que se va a almacenar dentro de la información.
Así que nuestra posición de búsqueda ahora va a ser no nuestro punto elegido, pero será el punto de información donde el golpe
ocurrió.
Además, todavía quieres alejarte un poco del objeto para darle al agente un poco de espacio porque el agente tiene
un cierto tamaño y todavía necesitas alejarlo.
Así que voy a apartarlo de nuevo.
Usando nuestra dirección elegida que estábamos usando antes de normalizar y multiplicar por cinco fue bastante bueno para el tamaño de estos agentes en
particular, y usted podría ponerlo en dos si lo desea.
De nuevo, tendrías que probarlo con el tamaño de tus agentes y lo lejos que crees que puedes estar y
salirte con la tuya.
Bien, así es como se esconden los inteligentes.
Guardemos eso.
Vuelve a la unidad y pulsaremos el play.
Y esta vez.
Nos esconderemos y vamos a escondernos.
Tenemos una mirada hacia arriba aquí.
Bastante cerca del árbol.
Ahora, si ponemos eso, volvemos al bote aquí y cambiamos esta distancia a digamos dos y lo guardamos
para ver si nos acercamos un poco más esta vez.
De acuerdo.
Y va a rodear el árbol.
Y.
Harding.
Oh, justo debajo del árbol, puedes ver allí.
Así que está bien y cerca del árbol.
De acuerdo.
Pero si seleccionamos ese árbol, que es este de aquí, verás que la posición de golpeo al volver habría
sido posiblemente por aquí.
Así que eso es lo más cerca que está de esa posición en particular.
Recuerde, no va a estar fuera de este colisionador porque no es detener el agente este colisionador.
De acuerdo.
Dejaremos este vídeo aquí.
Cuando volvamos, en la tercera parte de esta ocultación, vamos a modificar el comportamiento de la goma
para que puedas acercarte por detrás con el policía.