En esta conferencia quiero hablar sobre la animación y cómo afecta su traducción o movimiento
de sus personajes. Si desea seguir,
descargue el proyecto de inicio de animación con esta conferencia y ábralo. Dentro encontrarás dos personajes, así que tengo
un personaje zombie y tengo el pequeño leñador que hemos usado anteriormente.
Presiona Play y verás que giran y dan vueltas, avanzando hasta llegar a tu
cubo objetivo, que también puedes conducir por la escena.
Ahora el problema con sus animaciones en este momento si lo miras es que están patinando o
resbalando por el suelo.
Ahora eso es porque los tenemos moviéndose demasiado rápido.
Así que deja de jugar. El script que he adjuntado a cada uno es MoveLocal y se basa
en el script que hemos visto antes, pero he expuesto la Velocidad para que podamos cambiarla.
Cambiemos la velocidad para el leñador y para Jill the zombie a 0. 5) Ok, ahora presiona Play
nuevamente.
En el caso del leñador, parece que está dando pasos y propulsándose hacia adelante y no
hay mucho deslizamiento allí.
Entonces su ciclo de caminar es bastante simple, hasta un pie y el otro. Con Jill, tiene un ciclo
de caminata mucho más complicado, donde no camina en línea recta.
Está resbalando y patinando con los pies de lado a lado y, por lo tanto, dentro de su animación.
Ella tiene un movimiento de propulsión hacia adelante y somos nosotros tratando de mover ese modelo con nuestro código que también está
en conflicto con sus movimientos, que ya están integrados en su animación.
Ahora no quiero entrar en las complejidades de la animación de Unity porque está abriendo una enorme lata de
gusanos, pero quiero mostrarle un par de cosas diferentes que puede hacer para solucionar este problema.
En primer lugar, veamos a Jill porque las animaciones de los leñadores están bien.
Entonces, si descubres que puedes controlar tu personaje animado, muévelo con tus traducciones y alinea eso muy bien para que la
velocidad de la animación y la velocidad a la que lo mueves con tu código estén bien
sincronizadas, entonces está bien.
Pero si terminas con un modelo complicado como este zombie, por ejemplo, entonces es posible que necesites una
forma diferente de impulsarlos hacia adelante.
Afortunadamente, el sistema de animación humanoide en Unity ya puede impulsar a los personajes en función de
su animación.
Así que vamos a Jill y lo que vamos a hacer es desmarcar MoveLocal.
No queremos ese código en ella. Entonces, lo que vamos a hacer es desplegar el Animador. El Animador tiene el
control de animación del personaje en él.
Ahora lo que puedes hacer con un personaje humanoide es marcar una casilla llamada Apply Root Motion.
Lo que esto hará es mover a tu personaje en el mundo, como la animación mueve al personaje.
Si presiona Reproducir en este momento sin ningún guión allí, su animación no la está moviendo y es por eso que
se resbala en el suelo porque en su archivo de animación real, ella estaría avanzando.
Para ver eso, haga clic en Jill y luego en el Inspector, marque la casilla Aplicar movimiento de
raíz y luego también acercaremos a Jill aquí para que podamos verla moverse. Luego, presiona Reproducir y ahora sin ningún código, la
animación en sí la está moviendo hacia adelante y observa cuánto más natural se ve.
Parece que sus pies están plantados y se está moviendo, pero su movimiento hacia adelante no es
lineal, por lo que tratar de conducirlo hacia adelante con un Traductor no funcionará.
Si ya tienes este tipo de movimiento hacia adelante en tu personaje dentro de la animación,
entonces deberías intentar usarlo para tu ventaja. Hará que el movimiento de tu personaje se vea mucho más natural.
Entonces, para probar el uso de las animaciones para impulsar a Jill hacia adelante, en primer lugar, regrese al script MoveLocal que está en
ella.
Luego abre ese script y lo que quieres hacer es eliminar cualquiera de los códigos relacionados con
empujar el personaje hacia adelante, que de hecho es
esta transformación aquí abajo en la parte inferior. También estamos probando la distancia y también tendremos que comentarlo, de lo
contrario no haremos nada cuando hayamos alcanzado el objetivo. Guarda eso y volvamos a la Unidad.
Lo que vamos a hacer con el leñador es apagarlo, porque no estamos haciendo esto
por él y juguemos a Jill y veremos ahora que sus animaciones la están impulsando hacia adelante. Ella todavía se resbala debido a ese
slerp que está allí.
Entonces eso también lo está afectando.
Puedes ver que su movimiento es mucho más natural ahora. Para que ella se dé la vuelta con el sistema
de animación
en sí, también necesitarías una animación zombie 'vuelta' asociada con él. Ahora, porque no está alcanzando la meta (solo va
a dar vueltas y vueltas) en este punto
si tuviera una animación Idle, entonces es cuando configuraría la animación para ir a Idle y
luego, obviamente, dejaría de moverse a cualquier lugar porque estamos solo usando el sistema de animación para
empujarla hacia adelante.
Esa es la diferencia entre empujarla hacia adelante con el código y usar lo que hay en el sistema de animación
para empujar las cosas hacia adelante.
Si estás interesado en aprender más sobre la animación y este tipo de movimiento,
entonces tengo otro curso sobre dominar la animación en Udemy que te gustaría echar un vistazo, que te mostrará estas
diferencias y realmente te volverá loco. y-pernos del sistema de animación, pero para
este curso, realmente no tenemos tiempo.