🎮 UnityDocs

El Animator: máquina de estados de animación

Cómo funciona el sistema de animación de Unity: estados, transiciones, parámetros y blend trees. Cómo controlarlo desde código con SetFloat, SetBool y SetTrigger sin liarte.

📄 ArtículoIntermedio✅ RevisadoUnity 6.0 LTSActualizado 2026-07-15
DificultadConceptual Código Matemáticas
Tiempo📖 Lectura 8 min · ⌨️ Práctica 25 min

Las piezas#

El sistema de animación tiene tres conceptos que se montan en la ventana Animator:

  • Estados: cada uno reproduce una animación (Idle, Correr, Saltar).
  • Transiciones: flechas entre estados, con condiciones sobre parámetros.
  • Parámetros: variables (Float, Int, Bool, Trigger) que tu código cambia para disparar las transiciones.

La idea clave: desde el código no reproduces animaciones directamente; cambias parámetros, y el Animator decide a qué estado transicionar.

Los tipos de parámetro#

TipoPara quéSe cambia con
FloatValores continuos (velocidad)SetFloat
BoolEstados sostenidos (en el aire)SetBool
IntSelección numérica (tipo de arma)SetInteger
TriggerUn disparo puntual (atacar, saltar)SetTrigger

Controlarlo desde código#

C#
using UnityEngine;

[RequireComponent(typeof(Animator))]
public class AnimacionJugador : MonoBehaviour
{
    private Animator anim;
    private Rigidbody2D rb;

    void Awake()
    {
        anim = GetComponent<Animator>();
        rb = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        // Velocidad para pasar de Idle a Correr (parámetro Float)
        anim.SetFloat("Velocidad", Mathf.Abs(rb.linearVelocity.x));

        // ¿Está en el aire? (parámetro Bool)
        anim.SetBool("EnAire", Mathf.Abs(rb.linearVelocity.y) > 0.1f);

        // Ataque: disparo puntual (parámetro Trigger)
        if (Input.GetKeyDown(KeyCode.Z))
            anim.SetTrigger("Atacar");
    }
}
Usa hashes en código caliente

anim.SetFloat("Velocidad", x) busca el parámetro por nombre cada vez. Si lo llamas mucho, cachea el hash: int velId = Animator.StringToHash("Velocidad"); y usa anim.SetFloat(velId, x). Es una micro-optimización, pero gratuita.

Trigger vs Bool: no los confundas#

  • Bool: un estado que se mantiene (estás en el aire hasta que dejas de estarlo). Tú lo pones a true y a false.
  • Trigger: un aviso puntual que se consume automáticamente al usarse (atacar una vez). No hay que "apagarlo".
El trigger 'atascado'

Si disparas un Trigger pero la transición no llega a ocurrir (por ejemplo, el estado destino no está conectado), el trigger queda "pendiente" y puede dispararse más tarde de forma inesperada. Asegúrate de que toda transición con Trigger tiene un camino válido, o usa ResetTrigger si necesitas cancelarlo.

Blend Trees: mezclar animaciones#

Un Blend Tree mezcla suavemente varias animaciones según un parámetro. El caso típico: un solo estado "Locomoción" que combina Idle → Andar → Correr según la velocidad, sin transiciones bruscas. En vez de tres estados y flechas, un blend tree con el parámetro Velocidad.

Animation Events#

Puedes marcar un fotograma concreto de una animación para que llame a un método de tu script. Ejemplos: reproducir el sonido del paso justo cuando el pie toca el suelo, o aplicar daño en el frame exacto del golpe de espada.

C#
// Un Animation Event en el clip de ataque puede llamar a este método
public void MomentoDeImpacto()
{
    Debug.Log("¡La espada golpea ahora!");
}

Errores frecuentes#

  • Intentar reproducir animaciones "a mano" en vez de mediante parámetros y transiciones.
  • Confundir Bool (sostenido) con Trigger (puntual).
  • Transiciones con Has Exit Time activado cuando quieres una respuesta inmediata (desactívalo para acciones que deben cortar al instante).
  • Nombres de parámetro mal escritos: no dan error, simplemente no hacen nada.

Ponte a prueba#

📝 Pon a prueba lo aprendido

Resumen#

El Animator es una máquina de estados visual: estados con animaciones, transiciones con condiciones y parámetros que tu código cambia (SetFloat, SetBool, SetTrigger). Usa Bool para estados sostenidos y Trigger para acciones puntuales, blend trees para mezclar locomoción y Animation Events para sincronizar sonido/daño con el fotograma exacto.

Fuentes y para profundizar