cocos2dx动画技术选型
以下是技术选型
帧动画(缺点)
帧动画占用图片较多
帧动画处于资源限制很难表现出特别强的效果
程序手写action的方式很费时间,可能表述一个完美的动画需要1天或几天的时间,处于项目实际工期的要求常常会妥协 不做这种动画或者改用其他效果差但实现简单的方式, 最后导致游戏品质上不去
帧动画处于资源限制很难表现出特别强的效果
程序手写action的方式很费时间,可能表述一个完美的动画需要1天或几天的时间,处于项目实际工期的要求常常会妥协 不做这种动画或者改用其他效果差但实现简单的方式, 最后导致游戏品质上不去
理想的动画方式: 全部交给美术实现,程序直接导入或者经过简单修改可用
骨骼动画
首先: 并不是人物/怪物的动作动画才是骨骼动画,简单的说骨骼动画是由多个骨骼组成
可以把flash的每一层或者cocos2dx的每一个node 看成一个骨骼
一个复杂的动画由多个骨骼的单独动画混合而成, 每一个骨骼可以是一个node在run各种action, 也可以是一组帧动画, 也可以是二者的结合体
我们也可以将纯帧动画 等价于 一个骨骼动画里只有一个骨骼 并且这个骨骼是一个定时更换图片的帧动画
所以 凡是能用帧动画解决的问题 用骨骼动画都能解决
骨骼动画具有占用空间小,可以表示复杂动画的实现, 它的问题在于骨骼运动时要实时运算数据所以相比帧动画会加大机器的负担, 但是这个在现在的手机上已经不存在任何问题
骨骼动画的cocos2dx支持
1. cocosStudio
cocosStudio是触控的解决方案, 可以解决原生帧动画的问题
优势: 引擎自带 应该不用动c代码
劣势 : studio编辑器 不是专业的美术编辑器, 美术可能不喜欢用, 复杂的骨骼支持可能有各种坑,可能存在各种版本的兼容问题
2. dragonbones(龙骨)
dragonebones 3.0是一个flash插件,它可以把按照规范 制作的flash转换为cocos2dx能够加载的数据文件,
龙骨的最新版4.0 已经向spine靠拢自己做独立编辑器
优势: 开源, 可以对数据图片格式二次打包,会 flash的美术较多,学习成本低
flash可以很方便的做整体动画demo, 这样美术可以用一套工具搞定所有问题
与cocos2dx对接较好,龙骨的c++源码设计上每一个slot就是一个node,实现一个slot更换为node或者sprite设置label都不是问题
劣势: 需要移植c++代码, flash支持较多的功能(如滤镜 裁剪,路径)等这些支持龙骨并不支持导出,flash的锚点和旋转点制作中要重合 否则导出cocos2dx会变形, 这些概念美术可能不熟悉会经常用导致沟通成本
开源社区可能会有一些不稳定性
3. spine
spine 是一个更纯粹的动画编辑器, 所以不存在flash支持较杂导致美术困惑的问题, 适合做细腻的骨骼动画, 这方面我没有太多经验 大部分靠网上的资料收集
优势: 专业的动画制作,能发挥美术很大的优势, 引擎集成了spine, 如果做人物动画 或者 arpg 可能是非常不错的选择
劣势: 根据我查的资料spine在cocos2dx的支持上很是很受限, 如果想更好的应用在游戏 ,势必要修改部分源码来支持
与cocos2dx的设计上不是很一致, spine的SkeletonRenderer源码是用texture做slot, cocos2dx是以node为单位,所以将spine的骨骼节点换为程序中的node可能没有可行性
lua接口中方法不全 ,有些查找骨骼的方法需要自己手动导出
spine是收费软件
以下是我在网上查到的一些比较难缠的问题
http://blog.csdn.net/vagrxie/article/details/9077311
http://www.cocoachina.com/bbs/read.php?tid-279633-page-e.html
http://www.cocoachina.com/bbs/read.php?tid=287468&page=e&
http://blog.csdn.net/n5/article/details/21795265
如果能把这些问题都很好解决掉, spine应该是一个不错的选择,不然的话程序可能会比较痛苦, 可能会出现美术做一遍动画 程序一半动画导入 一半动画仿写的情况
尽管上述的动画编辑器基本都实现了在编辑器里设置多套图片进行换装, 但是这并不是一个最佳的解决方案,
在实际工作中动画复用,资源复用是一种很常见的现象, 比如美术做了一个升级成功的动画, 可能强化成功也复用这个动画 只是中间的文字发生了变化
美术动画过程中的一个节点很可能是程序实现的一个动态node
一个更好的解决方案是可以查到指定的骨骼节点然后将其换成程序在代码中编写的node或者sprite , 这样会极大的减少程序的工作量(比如将动画的文字节点更换为程序中的各种多语言文字),实现资源的复用
dragonbones我认为更适合做cocos2dx的动画
首先flash可以轻松的表示清楚我们要做什么
dragonbones的代码可以很方便程序将制定的骨骼替换成sprite和node 从而达到美术制作一套动画 程序动态复用