
El efecto sorpresa en los juegos se puede lograr no solo por una mecánica inesperada o por un trazador, sino también por la animación: en proyectos móviles, este último a menudo tiene un énfasis especial. Por lo tanto, decidí compartir una traducción interesante de material en Unity Animator. Inside: sobre la prioridad de las transiciones de animación y el cambio competente entre estados.
El mecanismo de interrupción en Unity Animator casi no vale los tutoriales y la documentación, por lo que muchos simplemente dejan de estudiarlo. Solo con experiencia entendí qué patrones y signos hay para usar una interrupción.
El artículo está dividido en tres partes:
- En el primero te diré qué son las interrupciones, qué tipos existen y cuál es la mejor manera de usarlas.
- El segundo trata sobre signos que indican la necesidad de interrupción. Eche un vistazo a Animator y vea cómo puede reemplazar las transiciones innecesarias.
- En el tercero, hablaremos sobre cómo organizar el trabajo en Animator y evitar su crecimiento descontrolado. Esto es especialmente cierto para equipos grandes en los que varias personas participan en el mismo animador.

Parte 1: ¿qué es una "interrupción"?
La interrupción es una característica de Unity Animator que le permite detener la transición de la animación de un estado a otro para pasar al tercero.
Esta es la única forma que le permite realizar una mezcla desde una transición incompleta al estado deseado. Con él, no confía en un cambio brusco de estado o, peor aún, en las transiciones de cualquier estado. Explicaré con más detalle más adelante.
Hay varios tipos básicos de interrupción:
Estado actualSi se proporcionan varias transiciones desde un determinado estado y se inicia otra durante una de ellas, la conmutación se realizará desde el punto actual, como se muestra en el diagrama:
Estado siguienteEl siguiente estado funciona de manera similar al estado actual. Pero aquí, Animator analizará las transiciones del siguiente estado, mientras que la transición del estado actual todavía está en vigor.
Estado actual y siguiente estado (Primero, estado actual, luego siguiente)En algún lugar por aquí, la teoría aburre a las personas y pierden interés en el tema. Espera Esto llevará tu habilidad con Animator a un nuevo nivel.
Habiendo dominado el Estado actual y el Estado siguiente, definitivamente comprenderá el tercer tipo, porque es su combinación. En él, Animator analizará la transición actual cuadro por cuadro en busca de otros que puedan realizarse desde el estado inicial. Si no se encuentran, Animator analizará el siguiente estado en busca de una transición adecuada. Al mismo tiempo, al cambiar a una nueva transición en el proceso de ejecución de la anterior, Animator se comportará exactamente de la misma manera que en los ejemplos anteriores.
Estado siguiente, luego estado actual (Primero, siguiente estado, luego actual)Todo es como en el tercer tipo, solo el orden de análisis será inverso.
Interrupción ordenada
Para cada estado, se establece la prioridad de las transiciones (de arriba a abajo), así:

Si antes no sabía por qué arrastrar componentes en esta lista, ¡listo! Aquí clasifica la prioridad de transición.
Cuando se marca la Interrupción ordenada, Animator solo interrumpirá si la prioridad de la nueva transición es mayor que la prioridad de la transición que está actualmente en progreso. Y cuanto más alta se encuentre la transición en esta lista, mayor será su prioridad.
Parte 2: cómo determinar dónde romper
Cuando se trabaja con interrupciones, es más difícil determinar exactamente cuándo usarlas. Y en algunas situaciones son necesarias, con el tiempo comienzas a notarlo.
Considere el ejemplo más llamativo. ¿Un patrón familiar?

Todo se reduce a cualquier estado. Derecho?
No
Esta es la primera señal de que la mayoría de las transiciones se realizan mejor con interrupciones. Las transiciones desde cualquier estado tienen derecho a la vida en casos especiales, pero la mayoría de las personas las usan cuando realmente necesitan (bueno, lo adivinaron) interrupciones.
Patrones de interrupción del estado actual:

A menudo, Cualquier estado se crea solo para la transición al segundo estado, cuando el primero ya ha comenzado. Olvídalo. Utiliza interrupciones.
Otro ejemplo: tenemos una transición de FirstState a SecondState, pero el tiempo de salida no está establecido, el tiempo de transición es 0 y se especifica una condición. La interrupción idealmente resolverá este problema. No puede recurrir a cualquier estado porque ya se ha utilizado con demasiada frecuencia y, al agregarlo a SecondState, activa estados que no son necesarios en este caso.
Próximos patrones de interrupción del estado:
Muy a menudo hay transiciones con tiempo de salida completamente loco y condiciones de transición. Establezca la interrupción correctamente y logrará más fácilmente el mismo objetivo. Como puede ver, cualquier estado a menudo se encuentra donde se necesitan interrupciones.
Recuerde que puede agregar múltiples transiciones desde dos estados idénticos para utilizar con éxito la interrupción.
Por lo general, todos los demás patrones son combinaciones de los ejemplos descritos anteriormente.
Situaciones típicas de interrupción:En algunas situaciones, las interrupciones son la mejor salida. Un poco de práctica en Animator, y puedes aprender fácilmente a notarlos.
a) La siguiente acción debería desencadenar inmediatamente una animación.Esto sucede a menudo en los juegos de acción donde hay muchas entradas y necesitas tomar rápidamente las siguientes acciones.
Por ejemplo, las personas a menudo usan las transiciones Any State (o transiciones múltiples con diferentes configuraciones) para realizar una transición suave de un salto doble a un tirón.
Es necesario mapear todas las acciones posibles, establecer la duración de los eventos y agregarlo a estados y transiciones. Y luego establezca interrupciones para cambiar correctamente de un evento a otro.
b) La animación ha comenzado, pero la situación ha cambiado y necesitamos pasar a una secuencia diferente de animaciones.Esto sucede a menudo con los animadores de la interfaz de usuario, en los que puede omitir algunos elementos del menú, y los submenús se pueden mostrar encima de todo lo demás.
Las personas a menudo agregan múltiples animadores al mismo objeto y establecen sus condiciones de activación / desactivación para omitir una animación y comenzar otra. Este es otro ejemplo donde vale la pena usar las interrupciones.
c) Necesita salir de la cadena de animación actual.Las interrupciones se pueden conectar entre sí: obtienes una secuencia de interrupciones que te llevará a una nueva cadena. En este caso, todos los estados se completarán correcta y oportunamente. Aquí puede usar las interrupciones del siguiente estado.
Parte 3: todo en Animator debería estar claro
Trabajar con Animator es un tipo especial de arte. Mientras más práctica, más obvio es el progreso. Un flujo de trabajo claro y consistente siempre tiene un efecto positivo en los resultados.
Recomendaciones para evitar confusiones en Animator:
- Utilice máquinas de subestado e intente evitar las transiciones a estados internos. La máquina de subestado correcta funciona independientemente en la entrada y la salida, usa transiciones que dirigen el flujo hacia adentro y sabe qué hacer con el resultado. De esta forma, puede evitar problemas críticos al trabajar en Animator.
- Use cualquier estado lo menos posible. Piensa si esto es realmente necesario. Contacta a tus colegas. Y solo si todos están de acuerdo, use las transiciones Any State.
- Si le parece que su Animador debería verse más fácil que ahora, ordénelo. Esta es la mejor manera de perfeccionar tus habilidades.