Animator动画融合、IK

2019-06-22  本文已影响0人  _Youcai

动画融合:在特殊情况下需要播放俩个动画的内容,且不增加动画数量,可以应用动画融合处理,比如移动攻击等

1.首先创建一个Avatar Mask


image.png

2.在Inspector界面选择骨骼源,并选择该骨骼遮罩所控制的绑点


image.png image.png

3.在Animator内增加新的层级设置权值为1,并将骨骼遮罩赋值进去

权值大的层级的骨骼遮罩绑点动作将覆盖权值低的绑点动作

层级的结构是一样的,都会包含Any State和Entry 并且游戏运行时每个层级都会同时从Entry运行

image.png

4.设置好对应的动画后可以进入游戏测试了!!

IK动画:反向动力学,根据骨骼的终结点来推算其他父节点位置的一种方法,比如通过手的位置推算手腕胳膊肘的位置。

          unity中可以设置IK的位置就是5个,分别是:头、左右手、左右脚

1.在设置IK的动画层勾选IK Pass 并保证动画Rig的类型为humanoid


image.png image.png

2.在代码中添加OnAnimatorIK回调


image.png

设置了动画类型和勾选IK pass后的层根据回调方法进行IK行为的处理

AvatarIKGoal类枚举

{

    LeftFoot = 0,  //左脚

    RightFoot = 1,  //右脚

    LeftHand = 2,  //左手

    RightHand = 3  //右手

}

//设置骨骼的权重,1表示完整的骨骼,如果是0.5哪么骨骼权重就是一半呢,可移动或旋转的就是一半

animator.SetIKPositionWeight(AvatarIKGoal.LeftHand, 1f);

animator.SetIKRotationWeight(AvatarIKGoal.LeftHand, 1f);

//设置右手根据目标点而旋转移动父骨骼节点 rightHandObj为父骨骼节点

animator.SetIKPosition(AvatarIKGoal.RightHand, rightHandObj.position);

animator.SetIKRotation(AvatarIKGoal.RightHand, rightHandObj.rotation);

//头部的IK行为可以通过以下方法进行,

animator. SetLookAtPosition(目标坐标)

animator. SetLookAtWeight(参数解读参考下图)

image.png
上一篇下一篇

猜你喜欢

热点阅读