最近一直在尝试性的使用cocostudio,发现确实是个不错的编辑器,虽然可能此编辑器还不是很成熟,但是对于我这样的新手,还是比较够用的。
里面的UI编辑器,动画编辑器和场景编辑器都用了下,基本流程就是在UI编辑器和动画编辑中编辑好UI和动画,然后在加入场景编辑器中,coding时只需要一行代码就能可以把场景加载进来(当然,一些UI的位置变化以及其他诸如按钮事件之类的,还是需要代码去设置),然后获取加入场景中的UI和动画,对它们进行操作。
开始学习cocos2dx的时候,都是在代码里面自己手动添加各种UI,不直观而且要写很多重复的代码,再加上各种类的不熟悉,所以比较费劲。UI编辑器的好处就在于此,可以直观的编辑出自己想要的UI,马上能看到效果,而且替换资源也很方便,还有很关键的就是在导出的时候所有UI的纹理贴图会被导入到一张或者多张大图中,提高性能。
先吐个槽,对于我这样的程序去摆骨骼动画的确有点困难,一个pose可以琢磨很久甚至自己摆pose做示范然后摆出来还是比较别扭比较丑,但是没办法,自己玩么,什么事都得自己做,一开始在youku上看过一个视频教程,本来以为照着做就可以了,但发现视频是6个月前的,而现在的动画编辑器的一些操作已经有一些不同(表明cocostudio的版本更新速度还是挺快的),但不要在意这些细节,程序员思维转的快,用起来还是没有什么大碍。
动画编辑器里面主要分为骨骼动画和序列帧动画,序列帧动画先不说了而且暂时没去用。骨骼动画的优势很明显诸如动作流畅资源占用小美术成本低pose随便摆等,但缺点其实也是很明显的(这里我针对的是2d,非3d),就像我这样的想去做个2d格斗游戏,很多动作如果硬是用骨骼动画来表现会显得很别扭,比如出拳带转身的出招这样的动作,目前为止我还不知道如何去解决,现有想法是在出招过程中对骨骼使用不同的贴图(在编辑器里面给一个骨骼添加多个资源文件,然后使用函数armature->getBone("bonename")->changeDisplayByIndex(displayIndex, true);),但这貌似又回到了需要多画图这个问题上,而且貌似动画的编辑也会增加一点点复杂度。
还有一个困扰我的就是动画编辑器编辑出来的动画(armature)的contentsize和anchor到底是怎么定义的,这个关系到在代码中该如何去对其setPosition。以下是我自己总结出来的,不一定正确。contentsize是你在动画编辑器中在形体状态下最初的骨骼形体(包含贴图)下给你计算出来的boundingbox的大小,而anchor则是骨骼中最上父节点的中心点,而目前我在代码中强制的把新的armature的anchorpoint设置成(0.5, 0.5),基于此去对armature对象进行setPosition操作。
20140325
今天发现原来cocostudio的动画编辑器有个功能叫IK(Inverse kinematics),有了这个东西就不用调一个走路姿势都调N久了,哎 ... 一个人研究东西果然弯路走的很多。
作为2d游戏的编辑器,无论是使用还是理解起来,都会比较简单,场景编辑器在代码里面就是一个node,这个node有很多子node,子node可以添加包含根据UI编辑器动和画编辑器里面导出文件创建的对象的组件,最后使用addchild加入到代码中的scene中,在代码中可以对这些子node以及其子component进行各种操作获得自己想要的结果。
好了暂时先写这些,当然,以上仅供参考阅读,不一定都对 ...