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:
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 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:
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#
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.