Avatar Mask 动画混合

Unity关于动画,大致分为动画融合动画混合。具体使用到的东西大概就是BlendTree和Avatar Mask前者主要解决类似跑的时候转向这种问题,而后者是用来解决诸如边跑边招手,或者攻击的问题。

这里主要记录一下Avatar Mask的使用心得。

首先先创建Animator Controller,双击打开Animator Controller,添加你所需要的动画,在左侧layer层可以看到默认的是只有一个Base Layer的(layerIndex起始值为0,也就是0层),在这层添加诸如走路这些基础动画。

然后点击layers,点击如图加号,新建一个动画层级。

点开新建的Up Layer,在这层添加你想要混合的动画,比如招手,攻击动画。

好像写到这里还没写Avatar Mask。。。

右键你的Assets文件夹,新建一个Avatar Mask,单击之后在inspector界面可以看到:

首先点开Humanoid,点击下面的模型的各个部位,绿色表示可以执行动画,红色表示不可以。

然后点开Transform,将美术导入的Avatar文件拖至Use skeleton from,然后点击Import skeleton,unity会自动将模型所有的骨骼给导入进来,在这里勾选我们需要参与动画混合的骨骼,比如我们需要招手,那就只勾选手部的骨骼,这里会自动勾选他的子节点。

勾选好之后Ctrl S就好。

然后回到我们的Animator Controller,点击Up layer,也就是上半身动画层,点击那个设置按钮,将我们刚才编辑的Avatar Mask给拖进来。Weight权重设置为1,然后设置Blending为Additive。

设置好触发动画的条件,模型就能边走边招手,边走边打了。

有一点坑的地方:

Blending 方式的设置:Override,混合后的动画会覆盖之前的动画,比如原本正常的走路动画,在播放了招手动画之后,在正常走路不招手的时候,上半身(也就是在avatar mask里面勾选了的骨骼)就不会动了,是因为被覆盖了。

Additive,仅仅是在需要混合的时候,将混合的动画添加进来,原本的动画不会被彻底覆盖。

----------------------------------------------20190424更新----------------------------------------------

项目中遇到模型正常播放A动画,但是需要左(右)手握拳。

于是美术单独给了手的动作和骨骼:

然后在玩家的Animatorcontroller里面新建了两个层:

层具体设置如下:

此处mask为新建的左手和右手的avatar mask:

这里需要注意的是单独手部位的avatar mask的设置,以左手为例,

humanoid处只勾选左手,transform这里选择玩家的完整骨骼信息,之后点击import skeleton,然后在里面只勾选上左手的骨骼,然后Ctrl S保存。

最后就是在Animatorcontroller里添加触发条件,握手动作的话添加了一个bool值,然后设置一下条件,需要握手的话将这个值设置为true就行,离开动作设置为false:

猜你喜欢

转载自blog.csdn.net/sun124608666/article/details/112191475