En esta conferencia, quiero abordar un problema que la gente me ha preguntado mucho en la sección de preguntas y respuestas
y que es sincronizar la velocidad de los agentes con la del agente navmesh. Como puede ver aquí, tengo un sistema de
puntos de referencia muy simple configurado en un navegador y Ethan que demuestra cómo su animación en ejecución va
demasiado rápido para lo que realmente está haciendo, por lo que debe ralentizarse, pero de
alguna manera necesita estar sincronizado con la velocidad del agente.
Ahora, cuando hablo sobre la velocidad del agente (déjenme dejar de
jugar esto), si volvemos a nuestro agente real y echamos un vistazo al Inspector, hay una 'Velocidad' que puede establecer.
Esta velocidad es tres punto cinco.
Ahora esto es SIEMPRE 3. 5)
Es la velocidad con la que le está permitiendo a su agente 'dirigir' / 'moverse entre puntos en'.
Pero no es necesariamente qué tan rápido va porque va a reducir la velocidad en las curvas y luego acelerar fuera
de ellas.
Por lo tanto, el valor que realmente desea que impulse sus animaciones es la 'velocidad' del
personaje y le mostraré cómo asignar eso a las animaciones.
Ok, para que puedas agarrar este proyecto en particular, se adjunta como un recurso.
Seleccione 'Entorno' y conviértalo en una malla de navegación, así que haga clic en la pestaña Navegación
o búsquelo en Ventana> AI> Navegación y asegúrese de hacer clic en [Hornear]
para que vea esta área azul cuando intente ejecutar, de lo contrario,
recibirá un error.
Cuando presionas Reproducir, verás exactamente lo que estás viendo aquí.
Ahora tengo las animaciones de Ethan subidas muy rápido a propósito, solo para demostrar cómo puedes obtener animaciones
que realmente no encajan con la velocidad de esto.
Ahora el personaje mismo es conducido por el agente navmesh, por lo que la velocidad y todo. La animación, si echamos un vistazo en el
Inspector a la animación, tengo desactivado 'Aplicar movimiento de raíz' porque no queremos que el
sistema de animación intente mover al agente mientras el agente está siendo impulsado por él mismo. código,
así que
eso tiene que estar apagado.
Okay.
Entonces, ¿cómo sincronizamos estos dos valores?
Bueno, antes que nada tenemos que ir al Animador con Ethan seleccionado y echar un vistazo a la lista de parámetros.
Actualmente está vacío.
Vamos a establecer un parámetro aquí,
así que vamos a agregar un Flotador y llamarlo velocidad o 'vel'.
Que hará.
Podemos dejarlo establecido en 0, vamos a cambiar esto con el código.
Ahora, una vez que tenga eso, seleccione la animación (solo hay un HumanoidRun allí en este momento) y
luego en el Inspector verá que la velocidad actualmente para HumanoidRun está establecida en 3.
Multiplicaremos esa velocidad por un parámetro, así que seleccione eso y
luego, si despliega la lista al lado, obtendrá 'vel'.
Entonces, cualquier parámetro que tenga aquí, que sea aplicable para multiplicar por velocidad, puede
ponerlo en esta lista desplegable y controlarlo con su script.
Todo bien.
Tenemos eso, ahora abramos el script que está en Ethan, que es este
FollowPath y primero necesitamos el Animador.
Así que hablemos de eso con 'Animator anim'; y luego lo recogeremos en
nuestro comienzo con 'anim = this. GetComponent 'y luego Animator y finalmente, este es solo un sistema de waypoint simple que pasa
por cada waypoint y los actualiza a medida que llegamos al destino.
Después de hacer eso, vamos a establecer la velocidad.
Entonces esto será 'anim. SetFloat ("vel" y el valor en el
que vamos a configurar eso.
Bueno, esa es la velocidad y puedes sacar eso del agente con 'agente'. velocidad'.
Ahora que es un vector.
Quieres la longitud de ese vector.
Entonces '. magnitud 'porque ese vector cambiará la longitud en función de la intensidad de la velocidad.
De acuerdo, ahora esta magnitud se introducirá en tu velocidad. Guarda eso una vez que lo tengas. Volvamos
a la Unidad. Tenga abierta la ventana Animator para que pueda ver este cambio 'vel' con la velocidad del agente.
Entonces presione Play y luego mire aquí. Puedes ver cómo cambia y realmente baja y luego vuelve a subir a
medida que acelera de cada uno de ellos.
Ahora cuando actualmente se multiplica 3. 5 por ... que hay aquí ... 3)
Así que eso es demasiado rápido como puedes ver allí,
así que detengamos eso.
Bajemos nuestro multiplicador de velocidad para decir 0. 3 y luego presione
Play nuevamente y ahora verá (volvamos a la escena, para que podamos
verlo mejor) que ahora está mucho mejor en esa superficie.
No está tocando el suelo, pero podemos arreglar eso.
Eso es una cosa de navmesh.
Si seleccionamos Entorno y vamos a Navegación, podemos desplegar 'Avanzado' y activar 'Malla de altura' y luego
hornear eso.
Eso le permitirá ahora cuando corra para sentarse un poco mejor en la malla real.
Eso, por supuesto, no afecta la animación en absoluto.
Pero ahora sabe cómo pasar los valores de su secuencia de comandos a su animador y luego controlar eso para
que tenga una animación de procedimiento más realista.