Resumen

Controlar las animaciones de un personaje requiere mucho más que reproducir un clip en bucle. Las máquinas de estado de animación (state machines) permiten dividir el comportamiento visual de un skeletal mesh en estados independientes y definir reglas claras para transicionar entre ellos, logrando mezclas naturales y un control total sobre cada pose.

¿Cómo se crea una máquina de estados en el Anim Graph?

Dentro del blueprint de animación, la pestaña Anim Graph es el espacio donde se conecta la pose de salida del personaje [0:35]. En lugar de vincular una animación directamente al nodo de salida, se puede hacer clic derecho y buscar state machine para añadir una nueva máquina de estados de animación [1:05]. Al conectarla al nodo de salida, todo lo que ocurra dentro de esa máquina determinará cómo se anima el personaje.

Al abrir la máquina de estados aparece un nodo de entrada desde el cual se definen los distintos estados. El primer estado recomendado es el de idle (reposo): se arrastra un cable, se crea el estado, se le da doble clic y se asigna la animación correspondiente [1:20].

¿Qué son las reglas de transición entre estados?

Cada estado necesita una condición que indique cuándo el personaje debe pasar de uno a otro. Estas condiciones se configuran en los nodos de transición que aparecen sobre los cables de conexión entre estados [2:40].

¿Cómo se agrega el estado de muerte?

Se crea un segundo estado llamado Dead y se le asigna la animación de muerte [2:05]. Al compilar sin regla de transición, Unreal muestra una advertencia indicando que no existe condición para cambiar de estado. La solución es crear una variable booleana llamada Is Dead dentro del blueprint de animación [3:25] y usarla como resultado en la regla de transición.

  • Si Is Dead es verdadero: el personaje transiciona al estado de muerte.
  • Si Is Dead es falso: permanece en idle.

Un detalle importante es la casilla Loop Animation en el panel de detalles de la animación [3:55]. Si queda activada, la animación de muerte se repite indefinidamente. Al desactivarla, el personaje muere una sola vez y se queda en esa pose.

¿Cómo se implementa un estado intermedio de daño?

Antes de morir, el personaje puede pasar por un estado de Injured (lesionado) [5:00]. Este estado intermedio usa la animación de daño donde el personaje agacha la cabeza, representando que ha recibido golpes significativos.

Para controlar esta transición se crea una variable de tipo float llamada salud, con valor por defecto de uno [6:00]. Las reglas de transición quedan así:

  • De idle a Injured: si la salud es menor a 0.33 [6:20].
  • De Injured a idle: si la salud es mayor o igual a 0.33 [6:40].
  • De Injured a Dead: si Is Dead es verdadero.

Este diseño bloquea transiciones directas entre estados que no deberían conectarse. El personaje no puede pasar de idle directamente a Dead sin haber estado primero en Injured, y de Dead no hay retorno [7:05].

¿Por qué es fundamental la comunicación entre blueprints?

Las variables Is Dead y salud viven dentro del blueprint de animación, pero eventualmente deben sincronizarse con el blueprint del Tamagotchi que ya contiene la lógica de vida y daño. Las clases en Unreal no se comunican de manera mágica: necesitan referencias explícitas para intercambiar datos [3:10].

Este concepto de comunicación entre blueprints es el pilar sobre el cual se construyen sistemas más complejos. Cada vez que el diagrama de la máquina de estados crece con nuevos comportamientos, las referencias entre objetos se vuelven indispensables para mantener todo sincronizado.

La práctica de hoy demuestra que con apenas tres estados —idle, Injured y Dead— ya se logra un sistema de animación coherente y reactivo. ¿Qué otros estados añadirías a tu máquina para enriquecer el comportamiento de tu personaje? Comparte tus ideas en los comentarios.