Creación y gestión de animaciones en Unity con Animator

Clase 9 de 60Curso Avanzado de Creación de RPGs con Unity

Resumen

Domina el flujo de animaciones 2D en Unity con un grafo claro, transiciones precisas y parámetros bien definidos. Aquí verás cómo usar el Animator para alternar entre estados como idle, up, down, left y right, cómo evitar retrasos con Has Exit Time y cómo sincronizar todo desde el script con SetFloat y el Input Manager.

¿Cómo configurar el Animator de Unity para un personaje 2D?

Organizar bien el grafo facilita el mantenimiento y reduce errores. La idea es partir de un estado idle /ˈaɪdəl/ estático y transicionar según el movimiento del jugador.

¿Cómo organizar el grafo de animaciones?

  • Crea cinco animaciones: up, down, left, right e idle con una imagen estática.
  • Colócalas como una cruceta: down abajo, up arriba, left a la izquierda, right a la derecha, idle al centro.
  • Verifica que cada clip “se mueve” correctamente antes de conectar transiciones.
  • Evita “cajitas” amontonadas: deja espacio para leer el grafo.

¿Cómo definir el estado por defecto idle /ˈaɪdəl/?

  • Si el personaje arranca en down, cambiará siempre a mirar abajo.
  • Pulsa botón derecho en idle y elige Set as Default State.
  • El personaje permanecerá quieto hasta recibir entrada del usuario.

¿Qué parámetros y condiciones controlan las transiciones de animación?

La clave está en dos parámetros float del Animator que reflejan la entrada del jugador: horizontal y vertical. Ambos deben coincidir exactamente con los nombres del Input Manager.

¿Qué parámetros float usar en el Animator?

  • Crea un parámetro float: horizontal.
  • Crea un parámetro float: Vertical (V mayúscula, aprovechando los strings definidos).
  • Su rango es continuo entre −1 y 1.

¿Qué condiciones y umbrales activar para cada dirección?

  • De idle a up: Vertical > 0.5.
  • De up a idle: Vertical < 0.5.
  • De idle a right: horizontal > 0.5.
  • De right a idle: horizontal < 0.5.
  • De idle a down: Vertical < −0.5.
  • De down a idle: Vertical > −0.5.
  • De idle a left: horizontal < −0.5.
  • De left a idle: horizontal > −0.5.

Notas prácticas:

  • Son condiciones complementarias: cuando una es mayor, la otra es menor.
  • En total, deben quedar ocho transiciones conectadas con sus condiciones.
  • Alinea flechas para mantener el grafo legible.

¿Cómo evitar el delay por Has Exit Time?

  • El retraso al girar se debe a Has Exit Time activo en cada transición.
  • Desmarca Has Exit Time en las ocho transiciones.
  • Resultado: cambio inmediato al presionar arriba, abajo, izquierda o derecha.

¿Cómo sincronizar el script con el grafo de animaciones?

El Animator necesita recibir, fotograma a fotograma, los valores de los ejes. Para ello, se expone una referencia al componente y se actualizan los parámetros al final de Update.

¿Cómo declarar y obtener el componente Animator?

  • Declara una variable privada: Animator animator.
  • Inicialízala en Start con GetComponent<Animator>().
using UnityEngine; public class PlayerControl : MonoBehaviour { private Animator animator; void Start() { animator = GetComponent<Animator>(); } void Update() { // Sincroniza parámetros con el Input Manager. animator.SetFloat("horizontal", Input.GetAxisRaw("horizontal")); animator.SetFloat("Vertical", Input.GetAxisRaw("vertical")); } }

¿Cómo queda la comunicación Animator–Input Manager?

  • El script envía horizontal y Vertical en tiempo real.
  • El Animator evalúa condiciones y dispara transiciones.
  • El movimiento del jugador se refleja en el grafo sin retardos.

Ideas clave que refuerzan buenas prácticas:

  • Usa idle como estado por defecto para arrancar en reposo.
  • Define umbrales claros (±0.5) para transiciones estables.
  • Mantén nombres de parámetros idénticos a los del Input Manager.
  • Desactiva Has Exit Time para respuestas inmediatas, común en RPGs.
  • Considera un blend tree más adelante para reducir el número de estados y flechas.

¿Te gustaría ver cómo montar ese blend tree y simplificar el grafo? Deja tus preguntas o dudas en los comentarios.