🎮 UnityDocs

IK: cinemática inversa

Qué es la cinemática inversa (IK) y cómo hacer que una mano alcance un objeto o un pie se adapte al terreno sin animar cada postura. IK del Animator (humanoides), Animation Rigging y IK 2D.

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

Directa vs inversa#

La animación normal es cinemática directa: giras el hombro, luego el codo, luego la muñeca, y la mano acaba donde acabe. La cinemática inversa (IK) es al revés: le dices dónde quieres la mano y Unity calcula los ángulos de hombro y codo para llegar. Sirve para lo que no puedes prever al animar: agarrar un pomo a cualquier altura, apoyar el pie en un escalón, apuntar un arma a un objetivo.

IK del Animator (humanoides)#

Si tu personaje usa un rig Humanoid, el Animator trae IK gratis para manos y pies. Actívala en la pestaña IK Pass de la capa del Animator y escribe en el callback especial OnAnimatorIK:

C#
using UnityEngine;

[RequireComponent(typeof(Animator))]
public class ManoALaCaja : MonoBehaviour
{
    [SerializeField] private Transform objetivo;   // dónde debe ir la mano
    [Range(0, 1)] [SerializeField] private float peso = 1f;
    private Animator anim;

    void Awake() => anim = GetComponent<Animator>();

    // Unity llama a esto en cada fotograma de animación si IK Pass está activo
    void OnAnimatorIK(int layer)
    {
        if (objetivo == null) return;
        anim.SetIKPositionWeight(AvatarIKGoal.RightHand, peso);
        anim.SetIKRotationWeight(AvatarIKGoal.RightHand, peso);
        anim.SetIKPosition(AvatarIKGoal.RightHand, objetivo.position);
        anim.SetIKRotation(AvatarIKGoal.RightHand, objetivo.rotation);
    }
}
El peso lo es todo

El weight (0 a 1) mezcla la animación normal con el objetivo IK. Sube el peso a 1 solo cuando el personaje va a agarrar y bájalo a 0 al soltar, interpolando; así la mano llega y vuelve de forma natural en vez de "pegarse" de golpe.

Animation Rigging: IK para cualquier rig#

OnAnimatorIK solo cubre manos/pies de humanoides. Para cadenas arbitrarias (una cola, un brazo robótico, apuntar la cabeza) usa el paquete Animation Rigging:

Paquete Animation Rigging

Instálalo desde el Package Manager. Añades un Rig Builder al personaje y constraints como Two Bone IK Constraint (brazo/pierna), Multi-Aim Constraint (mirar a un objetivo) o Chain IK. Se configuran en el editor y se controlan por peso, sin escribir la matemática de IK.

Foot placement (pies en el terreno)#

El uso estrella: que los pies se apoyen en escaleras y cuestas en vez de flotar o hundirse. Lanzas un raycast hacia abajo desde cada pie y llevas el AvatarIKGoal.LeftFoot/RightFoot al punto de impacto, ajustando también la rotación a la normal del suelo.

IK en 2D#

El paquete 2D Animation trae su propio IK para personajes con huesos: un IK Manager 2D con solvers (Limb, CCD) para que, por ejemplo, el pie de un personaje 2D se pegue a una plataforma.

Errores frecuentes#

  • Escribir IK fuera de OnAnimatorIK (o con IK Pass desactivado): no hace nada.
  • Dejar el weight a 1 siempre: la mano ignora la animación y se ve rígida.
  • Rig no Humanoid y esperar que funcione SetIKPosition (usa Animation Rigging).
  • Foot placement sin ajustar la rotación a la normal → el pie se clava plano en una cuesta.

Ponte a prueba#

📝 Pon a prueba lo aprendido

Resumen#

La IK calcula los ángulos de las articulaciones a partir de dónde quieres el extremo (mano, pie), para lo que no puedes preanimar: agarrar, apuntar, apoyar el pie en el terreno. En humanoides usa el IK del Animator con OnAnimatorIK e IK Pass (controlando el weight); para rigs cualquiera, el paquete Animation Rigging (Two Bone IK, Multi-Aim); y en 2D, el IK del paquete 2D Animation. El peso bien interpolado es lo que hace que se vea natural.

Fuentes y para profundizar