- Dragonbones可以制作骨骼动画,但是动画有个问题:比如跑步是一个动画,开枪是一个动画,我分别做好了,但是跑着开枪呢?要另外做一个吗?
另外做有两点不好:
1、额外工作
2、衔接有问题,比如你跑步跑到左脚在前面,突然玩家点击开枪了,你就要切换到跑步开枪的动作上去,可能就会变成右脚在前面。虽然可以严格的控制时间,根据动画进度来切换。而且如果是节奏比较慢的动作,你在两个关键帧之间开枪了,那切换可能就更明显了。
3、加入混合的动作比较多,就更麻烦了,你开启一个动作,不仅要考虑你要执行的(开枪),还要考虑正在执行了(跑步)。
但是动画混合解决了这些问题:
其实这也是应该的,比如一个角色带了一个围巾,围巾围飘,我把围巾的动画做好,不管觉得怎么跑怎么跳,围巾都是飘。
firingAnimation = armature.animation.FadeIn (anim_Fire,-1,1,0,firingGroup,AnimationFadeOutMode.SameGroup);
firingAnimation.autoFadeOutTime = 0.2f;
firingAnimation.AddBoneMask ("左上臂");
firingAnimation.AddBoneMask ("右上臂");
这里重点是动画的组不同,然后淡出的模式设置成:AnimationFadeOutMode.SameGroup,这样的话同组的动画之间是互斥的,但不同组的是共存的,共存的动画直接就会混合。比如把跑步和开枪设置在不同组,让他们混合。
AddBoneMask
是添加蒙版,比如上面给两个手臂添加了,那么开枪的动画里其他部分是不可见的,也就是不参与混合,这真是需要的,就是身体其他部分使用跑步时的动作就好了。还有个问题,是设定
autoFadeOutTime
,有了这个,动画在执行完后就会自动淡出。我们想要的动作肯定是跑步时开枪,手举起开枪,开完了手放下来,回到跑步时手的状态。如果开枪的动画不自动淡出,它会一直保持在最后一帧的状态,手会一直举着。跟随DragonBones的unity运行库一起的Demos例子里有个机器人的例子,那个角色的控制脚本来包含了很多内容,除了动画混合,还有跟随鼠标来动态跳帧武器的方向。这个功能很重要的,可以让角色拥有向任何角度攻击的能力,否则只有水平的就很局限了。