反向动力学(Inverse Kinematic,简称IK)是一种通过子节点带动父节点运动的方法。
正向动力学
在骨骼动画中,大多数动画是通过将骨架中的关节角度旋转到预定值来生成的,子关节的位置根据父关节的旋转而改变,这种构建骨架的方法被称为正向动力学。
反向动力学
与之相反,反向动力学是根据骨骼的终节点来推算其他父节点的位置的一种方法。
在 Unity中,使用反向动力学需要在状态机中开启 IK 设置。
- 在动画上加上 IK的脚本。
//IK写到这个方法内 layerlndex是图层的索引
private void OnAnimatorlK(int layerlndex){
//设置头部IK
animator.SetLookAtWeight(1);//设置IK权重,只有头部可以这样使用,
//target.position目标节点位置
animator.SetLookAtPosition(target.position);
//设置右手IK权重
animator.SetlKPositionWeight(AvatarlKGoal.RightHand, 1);
//旋转权重
animator.SetlKRotationWeight(AvatarlKGoal.RightHand, 1);
//设置旋转 四元数
animator.SetlKRotation(AvatarlKGoal.RightHand, target.rotation);
//设置右手IK
animator.SetlKPosition(AvatarlKGoal.RightHand, target.position);
}