什么是IK?
IK(Inverse Kinematics)即反向动力学,即可以使用场景中的各种物体来控制和影响角色身体部位的运动,一般来说骨骼动画都是传统的从父节点到子节点的带动方式(即正向动力学),而IK则倒过来,由骨骼子节点带动骨骼父节点,具体情况比如人物走路踩到了石头就需要由脚的子节点来带动全身骨骼做出踩到石头的响应。
如何用
第一步首先
打上勾Ik pass
然后再角色动画管理器的物体上
Animator animator;
public Transform target;
public Transform target1;
private void Start()
{
animator = GetComponent<Animator>();
}
private void OnAnimatorIK()
{
if (target != null)
{
animator.SetLookAtWeight(1);
animator.SetLookAtPosition(target.transform.position);
}
if (target1 != null)
{
animator.SetIKPositionWeight(AvatarIKGoal.LeftHand, 1f);
animator.SetIKRotationWeight(AvatarIKGoal.LeftHand, 1f);
animator.SetIKRotation(AvatarIKGoal.LeftHand, target1.transform.rotation);
animator.SetIKPosition(AvatarIKGoal.LeftHand, target1.transform.position);
}
}