Bienvenido de nuevo a la segunda parte de producir el comportamiento de Hyde.
Bien, hasta ahora tenemos a nuestro agente y logramos ponerlo al otro lado de un escondite.
En este caso, el árbol y luego empujarlo a una cierta distancia a lo largo del vector que va del policía al
árbol y más allá.
Usted sabe para una distancia de dos o una distancia de cinco o una distancia de diez.
Ahora, ¿qué sucede si terminas con objetos que son de diferentes tamaños?
Bueno, la posición desde la cual medimos el vector de la policía es el centro del modelo en
sí.
Y el Trade Center en este caso está en el centro de su base.
Ahora va a funcionar para el árbol.
Pero, ¿qué sucede cuando queremos proyectar algo más grande y decimos que todavía queremos llegar a una
distancia o dos?
Bueno, no podemos hacer eso.
Obviamente, si algo es como un tamaño de 10 Wood, el punto estaría dentro de nuestro objeto oculto y, por lo tanto, no
podríamos calcularlo para la malla de navegación.
Y como hemos visto antes, a la malla de navegación no le gusta intentar establecer posiciones para sus agentes para puntos que
no existen en la malla de red.
Y en otros casos, cuando su agente no puede llegar a su destino si
tiene un código que tiene que lidiar con eso, nunca podrá llegar a su escondite para continuar y
hacer otra cosa.
Entonces, ¿cómo solucionamos esto?
Bueno, recuerda el colisionador de cajas que pusimos en el árbol.
Ahí es donde entra.
Lo que vamos a hacer es tener una matriz de colada desde la copa hasta el árbol.
Y luego, lo que vamos a hacer es averiguar dónde se cruza esa derecha con el otro lado del
colisionador, de modo que el colisionador que está en la parte posterior del árbol es básicamente donde
su agente puede ir y pararse, y tan cerca como el agente puede párate al obstáculo o al escondite
sin estar dentro de él.
Entonces como hacemos esto.
Bueno, en realidad no es tan fácil como parece porque puedes lanzar un rayo.
Puedes hacer un lanzamiento de rayos y golpear un colisionador en la parte frontal, pero no puedes hacerlo en el
otro lado mientras viaja.
Entonces, cuando sale del colisionador, no hay forma de detectarlo.
Entonces, lo que tenemos que hacer es sacar a Ray y empujarlo a través del colisionador.
Y luego, cuando sale del otro lado, queremos darle la vuelta y luego enviarlo
de regreso y luego, donde sea que golpee al otro lado, ya que está regresando, es donde calculamos nuestro
escondite al saber que ese lugar va a estar justo contra nuestra malla o nuestro obstáculo, nuestro árbol de escondite sea lo
que sea que estemos usando es nuestro escondite.
Así que implementemos esto mientras volvemos a nuestro código bot.
Primero vamos a tomar todo el escondite y copiarlo y pegarlo porque es nuestra base sobre la que
queremos construir y vamos a llamar a esto algo diferente.
Así que llamémoslo inteligente hide.
Así que tienes dos copias de un mecánico oculto si quieres usarlas y luego colocaremos
un escondite inteligente aquí también para que podamos ejecutar este.
Ahora lo que queremos hacer es encontrar el árbol más cercano.
Entonces tenemos las cosas correctas aquí.
Pero lo que tenemos que hacer después de tener el árbol más cercano es tomar nuestro vector de ese árbol más cercano,
darle la vuelta y hacer un lanzamiento correcto antes de establecer nuestra búsqueda.
Entonces, las cosas que necesitaremos recordar después de haber pasado por este ciclo completo son el lugar
elegido que ya estamos recibiendo.
También debemos recordar la dirección elegida.
Entonces, el vector tres elige la dirección que será igual al vector tres o cero.
Y también queremos obtener el objeto del juego que estamos recordando, por lo que un objeto del juego elegido geo que es el árbol o
lo que sea que hayas elegido esconder detrás.
Por lo tanto, World dot instance dot obtiene puntos de escondite y lo estableceremos en el primero para que
básicamente lo hayamos inicializado en algo.
OKAY.
Entonces, dentro de esto, si los tiempos en los que elegimos el que actualmente creemos que es el más cercano,
después de elegir impecable, simplemente grabe nuestra dirección elegida.
Así que son elegidos DJI será nuestro diseño de piel.
Y entonces nuestro objeto de juego elegido será este escondite mundial en la posición.
YO.
Todo bien.
Entonces, ahora que tenemos estos valores, bajemos antes de nuestra búsqueda y hagamos un pequeño
reparto de rayos para descubrir dónde está el lugar detrás del árbol o detrás del colisionador donde podemos ir y sentar a nuestro agente.
Entonces, antes que nada, vamos a conseguir el colisionador que está en el objeto.
Entonces conseguimos que Claudia hide coal sea igual al objeto de juego elegido.
Punto obtener colisionador
de componentes.
Ahora estamos haciendo un componente get aquí que no es lo más optimizado para ejecutarse, pero realmente no
hay otra opción de dónde poner eso.
Supongo que podrías pasar por todos los objetos del mundo a medida que los creas
en tu matriz mundial aquí y mantener otra matriz de solo los colisionadores para usar, pero también recordamos que nos aseguraremos de que no lo
hagamos. en realidad ejecuta esto todo el tiempo.
Por lo tanto, no debería ser demasiado pesado en su sistema.
Bueno.
Así que tenemos nuestro colisionador ahora, vamos a
crear nuestro Rea que va en la otra dirección, así que llamémoslo nuestro Rayo trasero y será igual a un nuevo rayo desde
el punto elegido en la dirección negativa de bricolaje elegida y nosotros necesita normalizarlo porque el Rayo posterior necesita una dirección normalizada.
Así que ahora volvemos en la otra dirección.
Ahora, lo que es posible que también desee hacer con este es sacar este Rayo por el que está atravesando porque está creando
este escondite a una distancia de 10 y luego gira y regresa al otro
lado.
Ahora, si su objeto es mucho más grande que 10 distancias para cruzar, todavía va a terminar
sentado en el centro.
Y cuando haces una proyección hacia el otro lado, no habrás regresado y golpeado al otro lado.
Así que quizás tengas que hacer algunas pruebas con eso.
Bueno.
Entonces, lo siguiente que haremos aquí es crear una información de impacto de lanzamiento de rayos y vamos a crear una distancia flotante de
cuán lejos queremos proyectar nuestro rayo para probar si hemos alcanzado algo .
Entonces vamos a decir 100, que es una forma justa de proyectarlo y asegurarnos de que esta distancia aquí sea definitivamente
más larga que esta distancia aquí.
De lo contrario, si proyecta esto como a una distancia de uno porque está a diez de distancia aquí,
nunca lo golpeará y terminará golpeando nada.
Así que solo mira eso.
Bueno.
Así que ahora hacemos nuestras llamadas ocultas.
Entonces, con nuestro colisionador de puntos de reparto de Rayos y estamos usando la información y distancia de Rayo de retroceso Bien,
entonces, ¿qué obtenemos de eso?
Bueno, tenemos el punto de golpe en la parte posterior que se almacenará dentro de la información.
Entonces, nuestra posición de búsqueda ahora no será nuestro lugar elegido, sino que sería el punto de información donde
ocurrió el golpe.
Además, aún desea alejarse un poco del objeto para darle un poco de espacio al agente.
Debido a que el agente tiene un cierto tamaño y aún necesita simplemente empujarlo.
Así que voy a alejarlo nuevamente usando nuestra dirección elegida que estábamos usando antes de que
el punto normalizado y multiplicarlo por cinco fue bastante bueno para el tamaño de estos agentes particulares y podría reducirlo a dos
si lo desea.
Nuevamente, tendría que probarlo con el tamaño de sus agentes y qué tan lejos cree que puede
estar y salirse con la suya.
Bien, así de inteligente es esconderse.
Digamos que volvemos a la unidad y presionaremos play y esta vez nos esconderemos y nos vamos a
esconder.
Miramos aquí muy cerca del árbol.
Ahora, si dejamos eso, regrese al bote aquí y cambie esta distancia para decirlo y guárdelo, solo vea si
esta vez nos acercamos un poco, está bien.
Y él va a ir alrededor del árbol y esconderse.
Ah, justo debajo del árbol, puedes verlo allí.
Entonces es agradable y está cerca del árbol.
Bueno.
Pero si seleccionamos ese árbol que es este aquí, verás que la posición de retorno
podría haber estado aquí.
Así que es lo más cerca que está de llegar a esa posición en particular, recuerde que no va a estar
fuera de este colisionador porque no detendrá al agente.
Este colisionador solo calcula una posición y luego tenemos la distancia de frenado que establecimos en nuestro
robot antes cuando perseguía al policía.
Y eso también marcará una diferencia respecto de cuán lejos estamos de nuestra posición de parada.
Entonces, si volvemos a nuestro inspector sobre el caucho y echamos un vistazo a nuestra distancia de frenado, también lo
es si desea que sea mucho más preciso, puede establecerlo en cero.
Lo más probable es que te quedes atascado en alguna parte.
Lo estableceré en uno y echemos otro vistazo a lo cerca que estamos.
Y ahora nos acercamos y se puede ver que se ha acercado mucho más a ese árbol
y donde está el punto del colisionador, prácticamente está justo en ese punto.
Eso es mucho mejor.
Ahora tenemos que probarlo con otra cosa que sea un poco más grande.
OKAY.
Así que alejémonos aquí y lo que voy a hacer es sacar los árboles de las carreteras para
que definitivamente no sean lo más cercano para que él se esconda.
Luego, encontrará en sus activos una carpeta de activos estándar con los viejos activos estándar de creación
de prototipos que la unidad solía tener en los prefabricados y encontrará todo tipo de
objetos básicos diferentes, habitaciones, casas.
Y lo que vamos a hacer es agregar, digamos, este prototipo de casa aquí.
Entonces, simplemente arrastre y suelte eso ahora obviamente no lo hará un poco más pequeño porque es enorme.
OKAY.
Así que pongamos ese dicho allí y comprobaré que estamos tocando el suelo con él.
Sí.
OKAY.
Ahora queremos establecer que sea un escondite.
Entonces, en un inspector con eso seleccionado, desea seleccionar ocultar etiqueta falsa.
También queremos agregar en un cuadro colisionador.
Así que ve al fondo y verás que hay un colisionador de malla.
No solo lo apagues.
Deshágase de él por completo porque lo que he encontrado es que incluso si lo apaga y lo
deja allí, seguirá causando problemas.
Y en su lugar vamos a agregar en este cuadro colisionador.
Bien, ahora tenemos esa casa y estamos listos para decir lo que dice y presionar play y listo.
Ahora ha pasado porque sabes lo que olvidé hacer hornear el Michigan, pero antes de
hacerlo, no olvides configurarlo como una navegación estática para que la navegación del Agente y hornear la malla.
Y ahora si presionamos play lo que vamos a hacer es ir y escondernos al otro lado de esta casa.
Ahora, si solo manipulamos esto un poco para que podamos ver dónde terminó desde una vista
superior, puede ver que de hecho es donde esperaría que el elenco de Ray regrese del policía a través de ese colisionador y
luego vuelva a eso al otro lado de la casa, que es exactamente donde se detuvo, así que ahora, sin que todo
funcione como esperábamos, podemos volver al código de nuestro libro y agregar un poco de información adicional
de la que hablé en la primera parte, que se aseguraba de que este alto No sucede cada actualización.
Básicamente queremos verificar si necesitamos escondernos y vamos a decir que el agente necesita esconderse
si puede ver el objetivo.
Entonces, lo primero que vamos a agregar es un pequeño método llamado puede ver Target y
aquí arriba, sobre nuestra actualización, lo agregaremos para que sea bool que pueda ver target luego dentro de aquí.
Vamos a hacer una refundición para que el elenco golpeado a la derecha infiera la víctima 3 Rayo al objetivo.
Así que crearemos un viaje desde la posición de nuestro agente hasta la posición de nuestro objetivo.
Entonces, la posición transformada de punto objetivo menos esta posición de punto de transformación de punto y luego diremos si la física punto Ray le
costó esta posición transformada de punto Ray al objetivo y la salida será nuestra información de refundición si el objeto que golpeamos es así si la información
de refundición transforma de punto Dot Game Object dot tag es igual a cualquier etiqueta que tengamos en nuestros policías o en
nuestro policía que es policía.
Pero solo verifique que su proyecto lo haya captado y volveremos a ser cierto.
Así que esto va a realizar un rastrillo que, si nos escondemos detrás de
algo y el policía no puede verlo, entonces no vamos a golpear al policía con este derecho.
En realidad voy a golpear el colisionador del objeto que nos escondemos detrás.
Bien, pequeño error de ortografía aquí arriba, arreglemos eso
La información de mi elenco y estamos volviendo verdaderos en otros lugares, vamos a devolver falsos.
Así es como puedo ver Target ahora en la actualización.
Lo que podemos hacer es ir si podemos ver el objetivo, entonces realizaremos nuestro objetivo escondiéndonos de nuestra habilidad objetivo.
Correcto.
Así que guarde eso y vuelva a la unidad.
Antes que nada, verifiquemos que nuestra taza esté etiquetada y no lo esté.
Eso está bien.
Así que voy a agregar una etiqueta para nuestra copa y poner a Cup como la nueva etiqueta.
Seleccione la taza y hágala una taza.
Bueno.
Muy importante.
Todo bien.
Entonces presiono play.
Bueno.
Entonces puede ver que va a entrar duro en ese punto ahora.
No se moverá en absoluto hasta que empiece a doblar la esquina y luego él vaya a
la esquina
y se vaya.
Y él estaría del otro lado por la forma en que hemos proyectado desde la copa a través de ese objeto.
Está bien, ahora está allí.
Así que caminemos a la vuelta de la esquina.
Y tan pronto como seamos visibles, se irá y se esconderá en otro lugar.
Ahora la razón por la que no se esconde a la vuelta de la esquina.
Quiero decir que él está en este caso, pero tan pronto como llegue a esa esquina.
Mira, me doy vuelta por esta esquina aquí.
Ahora va a ir a alguna parte porque es donde se proyecta el vector.
Podía salirse con la suya escondiéndose aquí en esa esquina.
Pero lo que hemos hecho no es tan complejo como para permitirlo, pero está bien porque
está mucho más lejos y está mucho más seguro allí que simplemente estar en la siguiente esquina.
Así que esa es nuestra mecánica de manejo de hide.