El comportamiento de maravilla es lo que quieres que haga un personaje cuando no tiene una ubicación oficial de meta a la que ir.
Supongo que se podría considerar como el estado de reposo de la dirección.
Tiene que ser aleatorio, pero no demasiado para asegurar que el personaje no está saltando
de un lugar a otro de forma errática.
En este vídeo, veremos una sola forma de producir un bonito vagabundeo.
Funciona utilizando un círculo imaginario que se encuentra frente al personaje.
El círculo tiene una ubicación de objetivo situada en la circunferencia que se mueve hacia atrás y hacia delante alrededor
del círculo mientras 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 deambulatoria, que es la distancia del agente al centro del círculo.
El radio de la circunferencia que define el tamaño del círculo.
Y el Gita errante.
Eso influye en cómo se mueve la ubicación del objetivo de una actualización a otra.
Así que vamos a seguir adelante y programar esto en el bot.
Abre el código.
Ahora vamos a añadir este mismo lugar.
Hemos añadido todo lo demás.
Así que simplemente vaga por el vacío.
Y aquí vamos a usar eventualmente el Sikh.
Pero antes de nada, tenemos que calcular todo el valor.
Por lo tanto, necesitamos un flotador para el radio de vagabundeo.
Y lo pondremos a diez.
Entonces, necesitamos un flotador para la distancia de la vagancia.
Ponlo a 20.
Y luego necesitamos una carroza para Wanda Jeter.
Y lo pondremos a uno que realmente no es muy Jeter en absoluto.
De acuerdo.
Así que estos valores de aquí son los que quieres cambiar.
Si quieres cambiar el comportamiento de los vagabundos reales, y podrías hacerlos flotantes públicos en la parte superior de
tu código para que puedas acceder a ellos a través del inspector y cambiarlos allí.
Ahora necesitamos un objetivo Wanda.
Que quieren un objetivo necesita ser actualizado cada vez con un nuevo valor que la posición del objetivo se va a mover, lo que significa que tenemos
que seguir recordando dónde estaba, así que no podemos ponerlo en una variable local.
Sólo voy a ponerlo por encima de mi método aquí para que puedas verlo en lugar de subir a la parte superior
del código.
Pero si quieres mantener todo bien ordenado, entonces puedes ponerlo ahí.
Así que voy a hacer este vector 3. 0 para empezar.
De acuerdo.
Así que lo que vamos a hacer después de haber hecho eso, queremos poner el objetivo de Wanda.
Más es igual al nuevo vector tres.
Y vamos a elegir un valor aleatorio entre menos uno y uno multiplicado por nuestro valor de jitter, y eso nos
va a permitir avanzar y retroceder.
Así que el rango aleatorio entre -1. 0 F y 1. 0 F multiplicado por nuestra maravilla de jitter.
Eso es para nuestro valor X.
El valor de Y va a permanecer en cero porque no queremos afectar eso.
Y luego para el valor Z, pon una coma en ese rango aleatorio, lo mismo otra vez, -1. 0 F y 1. 0 F multiplicado por nuestra maravilla
de jitter.
Y entonces cerramos eso.
Así que eso nos va a dar un nuevo objetivo que desplaza el existente al objetivo, que es inicialmente cero.
Ahora que queremos apuntar en realidad tiene que estar sentado en la circunferencia del círculo.
Así que una vez que lo modifiques aquí, vas a terminar con una posición que está en la dirección del círculo,
pero ya no está sentado en el círculo.
Así que tenemos que hacer algunas cosas para volver a ponerlo en la circunferencia del círculo.
Así que vamos a, en primer lugar, normalizarlo.
Así que queremos apuntar a la normalización del punto, que lo reducirá a una longitud de uno.
Y luego vamos a ir uno al objetivo multiplicado es igual a uno al radio para empujarlo a la longitud correcta.
De acuerdo.
Así que esencialmente lo que hemos hecho aquí es que hemos creado este objetivo de vagabundeo, que está sentado en
la circunferencia de un círculo que actualmente se posiciona alrededor del agente, que tiene un centro de000.
Pero nuestro círculo, recuerden, en realidad está compensado por la distancia de vagabundeo.
Así que lo que tenemos que hacer con él es crear una posición que esté frente a nuestro agente.
Así que vamos a crear un vector tres objetivo y vamos a llamarlo local porque es local al agente, como
si el agente fuera actualmente el centro del mundo, como en 000.
Y el círculo está sentado alrededor del agente por lo que vamos a los locales de destino va a ser igual a la meta
de vagar más efectivo tres cero en la dirección Z, cero en la dirección Y, y luego la distancia de vagar en la dirección Z porque estamos
moviendo hacia adelante desde el agente.
Así que quiero una distancia que mueva nuestro objetivo local hacia fuera.
Luego tenemos que convertir ese objetivo local en una posición mundial que podamos buscar.
Así que sólo tenemos que convertirlo en el mundo de destino que será igual a este objeto de juego punto de transformación.
Y al igual que antes teníamos el vector de transformación para ir del espacio mundial al espacio local, ahora vamos a volver
a la inversa.
Así que el vector de transformación inversa y el local de destino.
Y ahora tenemos una posición mundial que podemos buscar.
Así que ponte a buscar el objetivo.
Mundo.
Ahora, para que esta maravilla ocurra, no olvides cambiarla en tu actualización.
Así que pongamos a Wanda ahí.
¿De acuerdo?
Guardemos esto y volvamos a la unidad.
Muy bien.
Así que pulsemos el play y echemos un vistazo al movimiento de este tipo.
De acuerdo.
Puedes ver un poco de movimiento.
De acuerdo.
Siempre decidió cambiar de dirección.
Y eso es porque tenemos un valor negativo ahí, que nos permite crear direcciones negativas
y darle la vuelta al bot.
No es muy errático porque nuestro Wanda Gita es bastante pequeño.
Así que vamos a volver a nuestro código y cambiar eso.
Así que aquí está nuestra Wanda Gita.
Cambiemos eso a diez y veamos cómo afecta eso a nuestro agente.
Así que guarda eso.
Vamos a repetirlo.
Así que vamos a encontrarlo.
Y es más errático en cuanto a los cambios de dirección e incluso sólo de lado a lado deambulando.
Puedes ver allí.
Así que las otras cosas que usted puede tratar si volvemos a nuestro código de nuevo es aumentar el radio de vagar, que va a hacer
que el círculo más grande.
Así que si pones eso como 50 y la distancia, si aumentas la distancia del círculo, entonces a medida que mueves ese círculo
más y más lejos, entonces para que su punto de destino es cada vez más lejos, lo
que significa que usted va a obtener un poco más suave movimiento como usted hace esto.
Pero asegúrate de que la posición que estás calculando existe en tu malla de navegación.
¿De acuerdo?
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úrate de tener una malla naval enorme o de mantener estos valores razonables.
Guardemos eso en 50 para el radio y veamos cómo afecta a nuestro comportamiento.
Así que vamos a volver aquí.
De acuerdo.
Así que exactamente lo que estaba mencionando.
Ahora puede ver que intentó producir algunos puntos allí y decidió no hacer absolutamente nada inicialmente debido
a esos valores aleatorios y donde estaba produciendo el círculo.
Así que supongo que te puedes imaginar que el radio de este tipo, lo acercamos.
Y si me alejo un poco, es que lo que estaba pasando allí habría sido que el círculo estaba probablemente
alrededor de esta zona aquí.
De acuerdo.
Y había puntos a lo largo de esta parte que estábamos creando, pero no hay malla de navegación para ellos.
Pero cuando vamos en este lado del círculo, fue crearlos y luego le permitió realmente dar la vuelta después
de que se quedó allí y no hizo nada por un tiempo.
Pero si cambias la distancia de desplazamiento para que el círculo esté en tierra de nadie, entonces ningún
punto de ese círculo va a estar en tu malla de navegación y por lo tanto causará un problema.
Así que con eso en mente, dejemos nuestro vagabundeo como lo teníamos inicialmente.
Pongamos nuestro radio de nuevo en C diez creo que era y el Gita de nuevo en uno.
Así que vamos a hacerlo un poco más bonito y un poco más pequeño.
Ahora, concedido, podría caminar hasta el borde del mapa y luego simplemente detenerse allí.
Pero mientras tengas un radio suficiente a tu alrededor, podrás darle la vuelta en algún momento.
Ahora, si nos fijamos en esto, la distancia para este círculo es 20, y entonces va a tener un radio de
diez, lo que significa que no va a ir alrededor del agente o se superponen al agente.
Así que tal vez si bajamos esto a diez aquí también, podemos estar seguros de que el círculo siempre va a estar ligeramente
desplazado del agente, pero detrás del agente también.
Así que el agente se va a dar la vuelta y se le va a permitir girar en esa malla naval.
Si no estás usando una malla de navegación y estás usando como tres coordenadas D en una especie de mundo
abierto y libre, ya sabes, entonces bien, no tendrás el mismo problema que tendrás cuando intentes ejecutar
el destino del agente para un punto que no existe.
Bien, eso es wander y algunos de los pequeños matices que tienen que ver con wander y puedes ver cómo es
muy ajustable simplemente jugando con estos valores.