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,仅仅是在需要混合的时候,将混合的动画添加进来,原本的动画不会被彻底覆盖。
项目中遇到模型正常播放A动画,但是需要左(右)手握拳。
于是美术单独给了手的动作和骨骼:
然后在玩家的Animatorcontroller里面新建了两个层:
层具体设置如下:
此处mask为新建的左手和右手的avatar mask:
这里需要注意的是单独手部位的avatar mask的设置,以左手例,
humanoid处只勾选左手,transform这里选择玩家的完整骨骼信息,之后点击import skeleton,然后在里面只勾选上左手的骨骼,然后Ctrl S保存。
最后就是在Animatorcontroller里添加触发条件,握手动作的话添加了一个bool值,然后设置一下条件,需要握手的话将这个值设置为true就行,离开动作设置为false:
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删