欢迎光临散文网 会员登陆 & 注册

Unity笔记-Animator动画层、骨骼与权重

2023-08-15 20:14 作者:黑白色的枫  | 我要投稿

Animator动画层

动画层主要用来做同一时间角色的身体各个部分播放不同的动画的效果,例如在射击游戏中角色可以移动射击,下半身播放移动动画,上半身播放射击动画。

我们可以通过点击Animator窗口 - Layers界面右上角的加号添加一个动画层。

如果没有这个窗口,可以通过Unity顶部的 Window菜单 - Animator选项 来打开这个窗口

骨骼

在新建了动画层以后,我们还需要一个 AvatarMask 来确定这个动画层有哪些骨骼会播放动画

Project 窗口右键 - Create - AvatarMask 创建一个 AvatarMask

点击新建的 AvatarMask,在 Inspector 窗口展开 Humanoid 项,就可以调整这个  AvatarMask 会影响到哪些骨骼,如果只需要上半身播放这一层的动画,就只把上半身的骨骼选中,变成绿色。

确定好骨骼以后,在 Animator - Layer 中点击动画层的设置按钮,将刚才的 AvatarMask 填入到 Mask 项中即可。

权重

在设置 AvatartMask 的时候,我们能在设置界面看到 Weight 项,权重决定了动画具体要播放到什么程度,0为不播放,1为完全播放。

另外,Blending 项的两个值,Overide 和 Additive 决定了这一层的动画如何与上层动画进行混合.

Overide 表示完全覆盖上层的动画,仅播放本层的动画,如果 Avatar Mask 设置了全身骨骼,所有的骨骼动画都会覆盖上层动画,如果只有部分的骨骼,则仅覆盖设置的骨骼进行动画。并且,在列表中的动画层越往下的优先级越高,如果有多个动画层并且权重都是1,仅会播放最下层的动画。

Additive 表示加在上层动画,两层动画会进行混合运算并播放。


在知道了这些以后,我们就可以通过代码来控制动画层的切换,配合状态机使用,在切换到对应的状态时将动画层的权重设为1,退出状态时权重设为0。

不过Animator的函数 SetLayerWeight 只能通过 index 来设置动画层权重,但是可以使用GetLayerIndex 函数通过动画层的名字来获得对应的 index


参考视频

参考文章

Unity动画系统详解7:Layer是什么? - 洪智的文章 - 知乎 https://zhuanlan.zhihu.com/p/156731741

Unity笔记-Animator动画层、骨骼与权重的评论 (共 条)

分享到微博请遵守国家法律