请教一个CCArmatureAnimation的问题

请教一个CCArmatureAnimation的问题,第1张

(目前我项目用的动画方式是Flash制作(一定规格,具体见http://zengrong.net/post/1915.htm大神的博客)然后通过这个大神修改的DragonBones插件导出.plist,xml,png 调用CCArmature进行播放。

然后问题来了,插件不支持事件

经过查看底层源码,可在xml中animations标签下的一个标签添加evt=""。进行添加事件(可看上传的图片)

(楼主本打算对dragonBones源码进行修改使可以在动作编辑的时候直接添加事件标签不用导出后手动修改,但目前项目比较紧留待以后有空再动手。)

添加事件后直接在代码内调用CCArmatureAnimation::setFrameEventCallFunc进行帧事件回调注册。

之后判断传入的帧事件名称即可达到预想效果。

另外做有两点不好:

1、额外工作

2、衔接有问题,比如你跑步跑到左脚在前面,突然玩家点击开q了,你就要切换到跑步开q的动作上去,可能就会变成右脚在前面。虽然可以严格的控制时间,根据动画进度来切换。而且如果是节奏比较慢的动作,你在两个关键帧之间开q了,那切换可能就更明显了。

3、加入混合的动作比较多,就更麻烦了,你开启一个动作,不仅要考虑你要执行的(开q),还要考虑正在执行了(跑步)。

但是动画混合解决了这些问题:

其实这也是应该的,比如一个角色带了一个围巾,围巾围飘,我把围巾的动画做好,不管觉得怎么跑怎么跳,围巾都是飘。

这里重点是动画的组不同,然后淡出的模式设置成:AnimationFadeOutMode.SameGroup,这样的话同组的动画之间是互斥的,但不同组的是共存的,共存的动画直接就会混合。比如把跑步和开q设置在不同组,让他们混合。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11517208.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存