Animator使用IK实现头部及身体跟随

我们在开发中往往会遇见需要视线或者说头部跟随一个物体移动的效果,这时就可以使用Animator中的IK Pass通道来完成。

假定我们有这么一个需求,人的头部(眼镜需要跟随这个球(Target)的移动来移动)

Animator使用IK实现头部及身体跟随_第1张图片
Paste_Image.png

  这时我们可以使用Animator中的IK Pass来实现需求。

  • 首先确定我们的角色的模型Rig的Animator Type为:Humanoid,因为我们会使用到Avatar Mask。
Animator使用IK实现头部及身体跟随_第2张图片
Paste_Image.png
  • 接着为我们的角色绑定好Animator组件,并设置Animator的当前层使用了IK Pass。
Animator使用IK实现头部及身体跟随_第3张图片
Paste_Image.png
  • 接着设置我们的遮罩(Mask)什么部分是可以变化的,这里只需要头动,使用Mask还涉及到多层的动画融合。(这里由于模型动画原因不设置都行)
Animator使用IK实现头部及身体跟随_第4张图片
Paste_Image.png
  • 接着进行代码控制。使用OnAnimatorIK回调函数进行实现。
Animator使用IK实现头部及身体跟随_第5张图片
Paste_Image.png
  • 其中SetLookAtWeight,看向的权重设置极其关键。它有许多重载,分别为LookAt的主权重,和后面细分的身体权重,头权重,眼权重还有脚权重。权重取值为0-1,越接近1,表现越大。
Paste_Image.png
  • 如果想控制脚或者手的旋转或者位置,同样可以通过使用SetIK来实现。
Animator使用IK实现头部及身体跟随_第6张图片
Paste_Image.png
  • 效果实现:


    Ani.gif
接着配合Animation Event实现投掷功能。
  • 需要求出添加力的方向这里使用向量的减法来实现,并将力单位化(这里加了Vector3.up是为了有抛物线效果,因为小球有重力),用系数来方便的控制力的大小。


    Animator使用IK实现头部及身体跟随_第7张图片
    Paste_Image.png
  • 效果实现:
throw.gif

你可能感兴趣的:(Animator使用IK实现头部及身体跟随)