Estoy trabajando con animaciones en Unity y hasta ahora solo he realizado cuatro (Arriba, Abajo, Izquierda y Derecha) y mi ventana de animación se ve a continuación ...
El problema es que si me estaba moviendo hacia arriba, quiero que el héroe permanezca mirando hacia arriba, no ir a 'ralentí neutral' (o como quiera que haya comenzado), pero eso significa que tengo 4 posiciones inactivas ... y cada uno de ellos puede pasar a Arriba, Abajo , Izquierda o derecha y van exponencialmente con cada acción adicional ...
Lo que me hace sentir que estoy haciendo algo mal ...
¿Hay una mejor manera de hacer transiciones entre diferentes acciones?
Respuestas:
Puede resolver este tipo de problema con BlendTrees (en general, es una buena idea confiar en los árboles de mezcla). El árbol de mezcla es una especie de estado de animación múltiple que, en función de un parámetro (flotante), decide cuál de las animaciones que contiene está actualmente activa (o, como alternativa, la animación resultante puede ser una mezcla de varias animaciones). Incluso cuando las animaciones no se mezclan, sino que se intercambian, el intercambio ocurre a mitad de la animación (es decir, si la animación "saliente" está al 35%, la nueva se reproduce desde el 35% hacia adelante). Desde el "exterior", todo esto está oculto como si fuera un estado simple / único.
Por ejemplo, tiene un árbol de mezcla con 8 animaciones de sprites (inactivo con 4 direcciones principales y 4 diagonales). Hay 2 parámetros en este árbol de mezcla: "horizontal" y "vertical". Y basándose en esos 2 parámetros, el árbol de mezcla decidirá qué animación reproducir. Según el parámetro "horizontal", el árbol de mezcla elegirá entre la animación izquierda / derecha y el parámetro "vertical" decidirá la animación superior / inferior. Luego, cuando se combinan, tendrás las 8 animaciones con diagonales (es la misma idea que está detrás de los joypads / joysticks).
Es un poco confuso, así que, incluso si a StackExchange no le gustan los enlaces, vincularé breve video de ejemplo que hice. Observe la parte superior derecha de la pantalla. Los puntos grises son los "estados" / animaciones y el activo es el que se cierra al punto rojo. Como se dijo al principio, puede ser aún más complejo y cada animación tiene una influencia / fuerza basada en su distancia al punto rojo, lo que resulta en una mezcla entre varias animaciones.
Desde el exterior es solo un estado (árbol de mezcla) y cuando aplica el mismo concepto para caminar y atacar tendrá solo 3 estados vinculados.
Los árboles de mezcla se crean con un clic derecho en un área vacía del Animador Crear estado -> Desde nuevo árbol de mezcla. A partir de ahí, todo está en el Inspector. Con el árbol de mezcla seleccionado, puede elegir el tipo de árbol de mezcla (1D, 2D, etc.), agregar animaciones, colocarlas (en relación con los valores de los parámetros) y seleccionar los parámetros de control.
Si desea obtener más información sobre Blend Trees, a continuación encontrará videos de Unity - Unite 2016 y Unity Tutorials .
fuente
El problema aquí es que está intentando vincular todo en lugar de usar un disparador para cambiar entre inactivos. Debería elegir la animación inactiva utilizando un if-else o un tipo de condicional de switch-case. Hice un diagrama que se ve mucho más ordenado (suponga que uno de ellos es el caso predeterminado):
Información adicional:
Eche un vistazo a Parámetros de animación sobre cómo establecer parámetros para que el animador los reconozca, Máquinas de estado para combinar animaciones, Comportamientos de máquina de estado para ver cómo verificar las variables que ha establecido.
fuente