El comportamiento maravilloso es lo que quieres que haga un personaje cuando no tiene una ubicación de objetivo oficial a la que ir.
Supongo que podrías considerarlo como el estado inactivo de la dirección.
Tiene que ser aleatorio pero no demasiado aleatorio para garantizar que el personaje no salte de
una ubicación a otra de manera errática.
En este video, todos vemos una sola manera de producir un buen paseo.
Funciona mediante el uso de un círculo imaginario que está sentado frente al personaje.
El círculo tiene una ubicación objetivo posicionada en la circunferencia que se mueve hacia atrás y hacia adelante alrededor del
círculo a medida que se mueve.
El agente tiene su objetivo actualizado y cambia de dirección.
Hay tres variables que básicamente definen este sistema y cómo hace que el agente se comporte.
La distancia de desplazamiento, que es la distancia desde el agente hasta la mitad del círculo, el radio de
maravilla que define el tamaño del círculo y el jitter de maravilla que influye en cómo se mueve la ubicación de
destino de una actualización a otra.
Así que sigamos adelante y programemos esto en el bot.
Puse el código.
Ahora vamos a agregar este mismo lugar en el que hemos estado agregando todo lo demás, así que simplemente anule Wanda
y aquí eventualmente usaremos la búsqueda.
Pero primero todo lo que necesitamos para calcular todo el valor.
Entonces necesitamos una carroza para Wanda.
Radio y estableceremos ese 10.
Luego, necesitamos un flotador para 1, la distancia lo establece en 20 y luego necesitamos un flotador para la fluctuación de fase de Wanda y lo
estableceremos en 1, lo que en realidad no es mucha fluctuación.
Bien, entonces estos valores aquí son los que desea cambiar si desea cambiar el comportamiento del
vagabundeo real y podría hacerlos flotantes en la parte superior de sus tarjetas.
Puede acceder a ellos a través del inspector y cambiarlos allí.
Ahora necesitamos un objetivo de Wanda que el objetivo de Wanda necesita actualizarse cada vez con un nuevo valor que la posición del objetivo
se va a mover.
Lo que significa que debemos seguir recordando dónde estaba para que no podamos ponerlo en una variable local.
Solo voy a ponerlo encima de mi método aquí para que pueda verlo en lugar de ir al
principio del código.
Pero si desea mantener todo bien y ordenado, entonces podría ponerlo allí.
Así que voy a hacer este vector 3. 0 para comenzar con Ok, entonces lo que haremos después de haber hecho eso
es que queremos poner uno.
Target plus es igual a la nueva víctima 3.
Y vamos a elegir un valor aleatorio entre menos 1 y 1 multiplicado por un valor de fluctuación.
Y eso nos permitirá avanzar y retroceder.
Entonces, el rango de puntos aleatorio entre menos un punto cero F y un punto cero f multiplicado por l maravilla.
Eso es para nuestro valor x, el valor y comenzará en cero porque no queremos afectar eso.
Y luego para la coma del valor z y el rango de puntos aleatorio.
Lo mismo otra vez menos un punto cero F y un punto cero f multiplicado por l se preguntó
inquietud y luego cerramos eso.
Bien, eso nos dará un nuevo objetivo que mueve el existente al objetivo, que inicialmente es cero.
Ahora que quiere apuntar realmente tiene que estar sentado en la circunferencia del círculo.
Entonces, una vez que haya modificado aquí, terminará con una posición que está en la dirección del círculo pero que
ya no se sienta en el círculo.
Por lo tanto, debemos hacer algunas cosas para volver a colocarlo en la circunferencia del círculo.
Así que primero vamos a normalizarlo.
Por lo tanto, desea apuntar al punto, normalizar lo que lo reducirá a una longitud de
1 y luego vamos a ir a uno para apuntar multiplicado igual a radio de maravilla para empujarlo a la longitud correcta.
Bueno.
Así que, esencialmente, lo que hemos hecho aquí es que hemos creado este objetivo Wanda que se encuentra en
la circunferencia de un círculo que actualmente está ubicado alrededor del agente que tiene un centro 0 0 0 pero nuestro círculo recuerda
que en realidad está compensado por la distancia herida .
Entonces, lo que debemos hacer es crear una posición frente a nuestro agente.
Así que creemos un vector tres objetivo y lo llamaremos local porque es local para el agente, aunque el
agente era actualmente el centro del mundo como en 0 0 0 0 y el círculo está
sentado alrededor del agente.
Entonces, iremos a los locales objetivo que van a igualar el objetivo Wanda más el vector 3 0 en la dirección z cero en la acción más amplia
y luego deambularemos la distancia en la dirección z porque lo estamos moviendo hacia adelante desde
el agente.
OKAY.
Entonces, quiero la distancia que mueve nuestro objetivo local, entonces necesitamos convertir ese objetivo local en una
posición mundial que luego podamos buscar.
Bien, solo necesitamos convertirlo al mundo objetivo, que será igual a esta transformación de puntos del objeto del juego de puntos.
Y justo lo que teníamos antes del vector de transformación para pasar del espacio mundial al espacio local, ahora podemos volver
al otro lado.
Así que el vector de transformación inversa y el destino local.
Y ahora tenemos una posición mundial que podemos buscar.
Así que busca el mundo objetivo.
Ahora, para que esto ocurra, no olvides cambiarlo en tu actualización.
Así que vamos a poner maravilla ahí abajo.
OKAY.
Guardemos esto y volvamos a la unidad.
Todo bien.
Entonces presionemos play y echemos un vistazo al movimiento de este tipo.
Ves un poco de movimiento.
OKAY.
Lo que siempre decidió cambiar de dirección.
Esto se debe a que tenemos un valor negativo que debería permitirnos crear direcciones negativas y dar
la vuelta al barco.
No es muy errático porque nuestro Gita vagabundo es bastante pequeño.
OKAY.
Así que ahora regresemos a nuestro código y cambiemos eso.
Así que es una deseada Julia. Cambiemos eso a 10 y veamos cómo afecta eso a nuestro agente.
Así que guarda eso, vamos a ejecutarlo de nuevo.
OKAY.
Así que vamos a
buscarlo y es más errático en cuanto a cambiar de dirección e incluso de un lado a otro deambulando.
Puedes decir
que están bien, eso es genial.
Entonces, la otra cosa es que puedes intentarlo.
Volvemos al código de nuestro libro nuevamente para aumentar el radio de maravilla que hará que ese círculo sea más
grande.
Entonces, si pones eso como 50 y la distancia si aumentas la distancia desde el círculo, entonces a medida que mueves
ese círculo más y más lejos, entonces tu punto objetivo se
está alejando cada vez más, lo que significa que obtendrás un poco más movimiento más suave al hacer esto, pero para estar muy seguro de que
la posición que está calculando existe en su malla de navegación, está bien.
De lo contrario, podría tener problemas cuando intente establecer la ubicación para que su agente se mueva hacia una posición que
en realidad no está en la malla de navegación, así que asegúrese de tener una gran malla de navegación
o de que mantenga estos valores razonables.
Solo guardemos eso en un radio de 50 y veamos cómo eso afecta nuestro comportamiento.
Entonces volveremos aquí.
Entonces, exactamente lo que acabo de mencionar ahora puede ver que intentó producir algunos puntos allí y decidió
no hacer absolutamente nada inicialmente debido a esos valores aleatorios y dónde estaba produciendo
el círculo.
Así que supongo que puedes imaginar que el radio de este tipo lo acercamos y alejamos un poco.
Es que lo que estaba sucediendo allí habría sido que el círculo probablemente estaba alrededor de esta área aquí.
Bueno.
Y había puntos a lo largo de esta parte que estábamos creando.
Pero no hay una malla de navegación para esos.
Pero cuando entramos en este lado del círculo, los estaba creando y luego le permitimos dar la vuelta después
de estar allí y no hacer nada por un momento.
Pero si cambiaste la distancia recorrida para que sea el círculo que está justo en la tierra
de nadie aquí.
No tiene sentido que esos círculos estén en su malla de navegación y, por lo tanto, causarán un problema.
Entonces, con eso en mente, dejemos nuestro paseo como lo tuvimos inicialmente.
Pongamos nuestro radio de nuevo en digamos 10, creo que era y allí debido a retroceder a 1.
Así que hagámoslo un poco más agradable y un poco más pequeño ahora.
Claro que podía caminar hasta el borde del mapa y luego detenerse allí.
Pero mientras tengas suficiente radio a tu alrededor, podrás cambiarlo en algún momento.
Ahora, si miramos esto, la distancia para este círculo es 20 y luego tendrá un radio de 10, lo que
significa que no va a dar la vuelta, el agente se superpondrá al agente.
Entonces, tal vez si reducimos esto a 10 también aquí, podemos estar seguros de que el círculo siempre
estará ligeramente compensado del agente.
Pero detrás del agente también.
Por lo tanto, el agente se dará la vuelta y se le permitirá girar en esa malla de navegación.
Si no está utilizando una malla de navegación y está utilizando como tres coordenadas en una especie de
mundo libre abierto, ya sabe, entonces no tendrá el mismo problema que tendrá cuando intente ejecutar el destino del conjunto
de puntos del Agente para un punto que no existe
Bueno.
Así que eso es Wanda y algunos de los pequeños matices relacionados con Wanda y puedes ver cómo es muy
ajustable simplemente jugando con estos valores.