动画融合:在特殊情况下需要播放俩个动画的内容,且不增加动画数量,可以应用动画融合处理,比如移动攻击等
1.首先创建一个Avatar Mask
image.png
2.在Inspector界面选择骨骼源,并选择该骨骼遮罩所控制的绑点
image.png image.png
3.在Animator内增加新的层级设置权值为1,并将骨骼遮罩赋值进去
权值大的层级的骨骼遮罩绑点动作将覆盖权值低的绑点动作
层级的结构是一样的,都会包含Any State和Entry 并且游戏运行时每个层级都会同时从Entry运行
image.png4.设置好对应的动画后可以进入游戏测试了!!
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
网友评论