Máquinas de estado y animaciones con condicionales
Clase 7 de 10 • Curso de Introducción a Unreal Engine: Configuración y Entorno de Desarrollo
Contenido del curso
Instalación y configuración de Unreal Engine para desarrollo de videojuegos
Primeros pasos con Unreal Engine
Siguientes pasos con Unreal Engine
Domina el control de animaciones en Unreal con una máquina de estados de animación: define estados claros, transiciones seguras y variables como salud o muerte para lograr comportamientos coherentes. Este enfoque con Blueprints y Anim Graph evita errores, mejora el flujo y prepara tu proyecto para escalar.
¿Qué es una máquina de estados de animación y por qué importa?
Una máquina de estados divide las animaciones de un skeletal mesh en estados (por ejemplo, idle, Injured, Dead) y define cómo se transita entre ellos mediante reglas de transición. En el Anim Graph conectas la pose de salida; lo que llegue ahí, el personaje lo ejecuta. A diferencia del Event Graph, aquí no programas lógica de eventos: construyes el flujo de poses.
- Permite mezclar y encadenar animaciones con control total.
- Evita transiciones “mágicas”: todo pasa por condiciones explícitas.
- Escala bien: el diagrama crece con el personaje.
¿Cómo se diferencia Anim Graph de Event Graph?
- Event Graph: lógica de eventos, llamadas y programación visual.
- Anim Graph: definición de poses y rutas de animación hasta la salida.
- La salida del Anim Graph es la animación final del personaje.
¿Qué estados básicos conviene configurar?
- Estado de idle: reposo por defecto del personaje.
- Estado Injured: indica daño recibido y postura cabizbaja.
- Estado Dead: animación de muerte sin retorno.
¿Cómo crear y conectar estados y reglas de transición?
En el Anim Graph, añade una nueva state machine y define estados con su animación concreta: idle, Injured y Dead. Luego, conecta estados con reglas basadas en variables. Si no hay reglas, aparecerán advertencias: no hay forma de decidir “cuándo” cambiar.
- Crea el estado idle y asígnale su animación.
- Crea el estado Dead, asígnale su animación y desactiva loop animation para que no se repita.
- Introduce un estado intermedio Injured antes de Dead para bloquear saltos indebidos.
¿Qué condiciones activan cada transición?
Usa variables simples y explícitas: un booleano para muerte y un float de salud entre 0 y 1. El umbral de 0.33 separa idle de Injured.
Idle -> Injured: Salud < 0.33
Injured -> Idle: Salud >= 0.33
Injured -> Dead: Is Dead == true
- Evita retorno desde Dead: no conectes transiciones de vuelta.
- Compila y prueba variando valores para validar el flujo.
¿Cómo evitar bucles no deseados?
- Selecciona la animación de Dead y desmarca loop animation.
- Verifica que la muerte se ejecute una sola vez y se detenga.
¿Cómo se comunican los blueprints para actualizar variables?
La comunicación entre Blueprints es central: las clases no se comunican “por arte de magia”, necesitan referencias. En el Blueprint de animación, crea variables locales para conducir las transiciones mientras integras referencias más adelante.
- Variable Is Dead: define si el personaje está vivo o muerto.
- Variable salud (tipo float): valor entre 0 y 1; por defecto 1.
- Reglas de transición: comparaciones simples con estas variables.
Este patrón permite empezar sin conectar aún con la mascota (por ejemplo, un Tamagotchi) y, después, reemplazar valores locales por datos reales referenciados desde otros Blueprints. Así aseguras un diseño claro y mantenible.
- Controla estados intermedios para bloquear saltos irreales.
- Centraliza la lógica de salud y muerte en un lugar fiable.
- Refuerza el flujo: de idle a Injured, y de ahí a Dead si corresponde.
¿Quieres que abordemos cómo pasar de variables locales a referencias del personaje en ejecución y sus mejores prácticas de comunicación entre Blueprints? Cuéntame en los comentarios qué parte te gustaría ver a fondo.