El comportamiento de búsqueda es un poco como buscar, excepto que en lugar de seguir a un objetivo, el
agente predice dónde estará el objetivo en el futuro para interceptarlo.
Vemos que esto ocurre todo el tiempo en los juegos deportivos.
En el caso del fútbol, la pelota real proporciona a los jugadores la posición futura prevista
de su oponente.
Ahora para determinar la ubicación de NUESTRO VENDEDOR hacia donde debe dirigirse el ladrón.
Necesitamos obtener la posición del objetivo en la dirección de avance y su velocidad.
También necesitamos la velocidad de búsqueda y su distancia al objetivo, ya que dependerán de la rapidez con
que el caucho pueda alcanzar.
Luego podemos predecir hacia dónde debe dirigirse el perseguidor en función de estos valores y calcular qué
tan lejos del objetivo debe apuntar el perseguidor.
Como la distancia entre el perseguidor y el objetivo se divide por la suma de las velocidades de ambos agentes, avancemos
e implementemos esto en nuestro guión de cuadro.
Así que abre tu código bot y vamos a perseguir y huir.
Solo quédate aquí.
Bueno.
Entonces perseguir tendrá su propio método, obviamente, así que evite perseguir.
Y luego dentro de aquí, lo que vamos a hacer es, en primer lugar, calcular el vector para
el objetivo, de modo que el DJI objetivo del vector 3 sea, de modo que la dirección sea la posición del punto de transformación del punto objetivo menos esta posición del
punto de transformación del punto.
Ahora, una vez que tenemos eso, podemos seguir adelante y calcular el futuro.
Entonces, ¿qué tan lejos vamos a mirar más allá de la dirección hacia adelante del objetivo?
Así que mira hacia adelante y aquí es donde estamos prediciendo la ubicación futura.
De acuerdo, será la magnitud del punto DIY R objetivo y lo dividiremos por la velocidad de los agentes
para que la velocidad del punto del agente más la velocidad de la unidad que está pasando en el policía para hacer eso.
Será el componente de obtención de puntos de destino para el script de unidad.
Y recuerde que creamos esa velocidad actual o lo hice y la puse allí y se la mostré antes
donde estamos actualizando la velocidad real y la convertimos en un valor público para que pueda acceder de nuevo en
el script de la unidad.
Está bien, eso es lo que está mirando hacia el futuro.
Y luego, lo que vamos a hacer es buscarlo.
Por lo tanto, buscaremos la posición del punto de transformación del punto objetivo más la vista hacia adelante, pero la vista hacia adelante la usaremos como un multiplicador contra el vector
hacia adelante K de los objetivos, de modo que el vector hacia adelante sea la forma en que el
objetivo está mirando y viajando desde el punto hacia adelante .
Y tiene una longitud de uno, por lo que se normaliza automáticamente para nosotros, por lo que multiplicar eso por
mirar hacia adelante nos da un vector que es la longitud de mirar hacia adelante y, por lo tanto, estamos agregando eso a la búsqueda.
Bien, ahora tenemos eso o tenemos que verlo. Se ha puesto al día la actualización y solo
hay que cambiar esto para poder ejecutarlo.
Bueno.
Así que guardemos eso y volveremos a la unidad y presionemos play.
Bueno.
Así que puedes ver que se acerca al policía para mover al policía y si
cambiamos de dirección verás que va a predecir la dirección futura en lugar de seguirlo ciegamente.
Creo que puedes verlo.
Qué tan lejos está mirando hacia el futuro.
En ese caso, ahora, cuanto más rápido vayan, más anticiparemos que sucederá.
Ahora también habrás notado que cuando la goma llega a la Copa, aterriza justo encima de la copa, lo cual no es
realmente lo que quieres, quieres que se detenga un poco más lejos.
Ahora que en realidad es una dinámica del agente de malla de navegación y puede solucionarlo.
Si selecciona la goma y en el inspector, va y modifica la distancia de frenado.
Así que actualmente tengo uno si configuro eso a dos y luego presionamos play, se detendrá a una distancia
de dos de la ubicación del objetivo.
Ahora, si quieres forzar esa mirada hacia el futuro un poco más de lo que realmente es, realmente no
puedes verlo allí.
Volvamos a nuestro código y podemos multiplicarlo aún más.
Por lo tanto, en realidad está mirando más allá de mirar hacia el futuro.
Multipliquemos eso por cinco.
Supongo que solo para darle una muy buena mirada al futuro.
Volvamos y presione play ahora lo que encontrará mientras mira hacia adelante.
Ahora mi jefe ni siquiera va en este punto, pero una vez que comience a agregar una velocidad, mirarán hacia adelante.
Vamos a dar la vuelta y ahí lo tienes.
Entonces, ahora el cálculo para el futuro se ha vuelto bastante grande.
Entonces es la velocidad que iba en esta dirección.
Y los bots terminaron allí en algún lugar justo al borde del mapa.
Sin embargo, si esto está sucediendo, lo que no debería ser porque no está
destinado a multiplicar esa mirada hacia el futuro, puede solucionarlo poniendo en otra condición para probar si su policía su objetivo ha dejado de moverse,
en cuyo caso entraría en un Sikh en su lugar.
Así que esa es una de las condiciones adicionales que podría agregar a esta búsqueda.
Y lo que también haremos es mejorar esto agregando algunas otras condiciones que aborden si debe
buscar o si realmente debe mirar hacia el futuro, por supuesto.
Una condición que consideraremos es que si el objetivo ha dejado de moverse, convertiremos la persecución en un
Sikh y simplemente nos dirigiremos directamente hacia el objetivo.
La siguiente condición que vamos a considerar es que si el ladrón está delante del policía
y ya se dirige en la misma dirección, entonces el ladrón debe darse la vuelta y solo buscar al policía.
Entonces, ¿cómo determinamos si el ladrón está delante del policía?
Bueno, usamos ángulos y usaremos los ángulos entre los diversos vectores que ya hemos estado usando.
Cuando el ladrón está delante del policía, el ángulo entre el vector de avance de
los ladrones y el vector del policía será mayor de 90 grados cuando el ladrón está detrás del policía.
El ángulo ahora será inferior a 90 grados si el ladrón está delante del policía, ya podría haberse
dado la vuelta para ir hacia el punto de intercepción.
Si este es el caso, no queremos que lo busque.
En cambio, tenemos que restringir nuestras condiciones para buscar aún más considerando el ángulo entre las
dos direcciones de los agentes.
Y si esto es bastante pequeño, entonces permitiremos que la búsqueda se convierta en un Sikh, así que sigamos
adelante y agreguemos estas condiciones al método de persecución.
Entonces, el primero que tenemos es si el objetivo ha dejado de moverse para que podamos probar eso.
Si la velocidad que es esta aquí, simplemente copiamos eso si la velocidad es menor que cero punto cero uno.
Si y lo digo, en lugar de decir es igual a cero porque a veces se obtiene una flecha flotante con valores
cero y puede que en realidad no sea igual a cero.
Puede ser un número muy muy pequeño.
Entonces, al hacer esto, te cubres como si estuviéramos más o menos quietos nuestro objetivo, entonces lo
que vamos a hacer aquí es Sikh.
Así que solo vamos a buscar el objetivo.
Entonces, el punto objetivo transforma la posición del
punto y luego también vamos a regresar en lugar de continuar en este método.
Ahora, las otras cosas que queremos probar es el título relativo del agente.
Entonces, si tenemos un pequeño ángulo pequeño entre las direcciones hacia adelante de los agentes, entonces vamos a hacer que nuestro
agente siga o busque el objetivo en lugar de mirar hacia adelante.
Entonces necesitamos calcular ese ángulo particular.
Así que vamos a flotar el rumbo relativo o llamémoslo igual al ángulo de tres puntos del vector y ese ángulo va
a estar entre este punto de transformación de punto hacia adelante y queremos obtener el vector de avance del policía o
el objetivo.
Ahora tenemos que obtener el vector hacia adelante en relación con el agente real, lo que
significa que necesitamos traducir ese vector que es la 4 dirección del objetivo al espacio del agente.
Lo que eso significa esencialmente es que estás haciendo de ese agente el punto de origen de su pequeño
conjunto de coordenadas cartesianas y luego proyectando el vector de avance del objetivo en ese automóvil.
Entonces, en realidad es bastante fácil de hacer.
Obtienes la transformación.
Por lo tanto, estas tendencias de puntos forman puntos y tiene su propio método de transformación de vectores y el
vector que desea transformar es el punto de transformación de puntos objetivo hacia adelante de esa manera.
Entonces los estás poniendo en el mismo espacio, en el mismo espacio relativo.
Así que ese es tu ángulo entre sus direcciones hacia adelante.
Ahora también queremos obtener el ángulo entre la dirección hacia adelante del agente y la dirección hacia el
objetivo.
Bueno.
Así que será flotante al objetivo es igual al ángulo de tres puntos del vector.
Y de nuevo es este punto transformado o hacia adelante.
Y de nuevo necesitamos hacer este vector de transformación de punto y el vector en este caso es el deseo objetivo que
calculamos justo antes de K, así que ahora tenemos ambos ángulos, también podemos ponerlos en
nuestra declaración if, así que vamos a ponerlos aquí y va a ser un
objetivo y veremos si es mayor que 90 y nuestro rumbo relativo es menor a 20 grados.
Y lo haremos o eso con la velocidad del objetivo.
Entonces, estas son nuestras condiciones en las que realmente realizaremos un Sikh.
OKAY.
Así que guardemos eso y volveremos a la unidad.
Presiona play y pruébalo ahora debido a
las velocidades y ángulos reales de estos muchachos, es realmente difícil ver si
está buscando o si, de hecho, está mirando hacia el
futuro, pero simplemente sigue adelante.
Y hace toda la diferencia que tenga estos cálculos correctos cuando avanza a otros comportamientos
que en realidad se basan en la búsqueda.