又写程序写累了,换换思路,写个教程放松下吧,呵呵。
在cocos之中,对3D精灵动画的支持有通过时间,和通过帧数来指定。
比如一个动作,其时间是0.1->0.3,那么可以用如下语句来指定这个动画:
auto animate = Animate3D::create(animation, 0.1f,0.3f); ``` 如果其帧数是第12-20帧,那么可以用如下语句来指定:auto animate = Animate3D::createWithFrames(animation, 12,20); ``` OK,基本的方法我们了解了。一般的程序,都是把这个动画序列写在程序里面,那样。。。。。。。呃。。。。。。。。。。。你要加一个精灵,就得重新写一个程序。。。。。。。。。。。要加一个动作,也要改一次程序。。。。。。。。。。。。。例如FantasyWarrior3D的相关代码:-- init Mage animations============================= do Mage._action = { idle = createAnimation(file,206,229,0.7), walk = createAnimation(file,99,119,0.7), attack1 = createAnimation(file,12,30,0.7), attack2 = createAnimation(file,31,49,0.7), specialattack1 = createAnimation(file,56,74,0.2), specialattack2 = createAnimation(file,75,92,0.2), defend = createAnimation(file,1,5,0.7), knocked = createAnimation(file,126,132,0.7), dead = createAnimation(file,139,199,0.7) } end ``` 怎么办?呵呵,我从自己的程序里面抽取一个思路出来跟朋友们交流。先说明了是个思路,呵呵,因为我的程序不知不觉已经很庞大了。。。。想抽取整个实现流程居然变得不太现实了。。。。。。。。。。。。。 在第一章的时候,我们说到了,boss是使用数据库定义的,其配套有个boss_action数据库,用于存储某个boss的序列动作。这里详细贴一下。 我们照用FantasyWarrior3D的mage.c3b模型,照抄上面lua里面的帧序列哈,呵呵,多省事啊:14: 首先,是在boss库增加一条记录,指定一个新boss使用mage.c3b模型,并且指定一下渲染文件缩放比例啥的。然后,本节重点来了,呵呵,在boss_action库,把mage的动作给抄进去。这次对于mage就先用按帧定义其动画的方式吧,时间参数就先不填了,呵呵,只填各个动作名称、开始与结束帧数。
好了,这就定义好了,如何在程序里面依靠数据库的记录,来实现各个动作的播放呢??? 忽然觉得写烦了。。。。。。。下一节再继续写,呵呵。 先来个mage在我的程序的实现图,之前的小白人太丑啦,换上mage,稍微好看一点点,呵呵。。。。。。。。 补记,后来仔细看了一下,发现mage模型的动作衔接不顺,有明显跳帧现象,看来抄袭lua代码里面的帧数填入不对呢。重新整理的帧数信息如下: 这个帧数据,是每做完一个动作,都会回到idle状态那个姿势的,这样配合状态机的切换,就不会产生跳帧现象了。 很诧异原FantasyWarrior3D的lua里面为什么可以那样写,动画衔接却没出现问题,有空要去看看是怎么回事,呵呵。查看模型文件,mage明明就只有3个attack动作,lua里面定义了四个attack动画,不知道是怎么做的,呵呵,看来要学习的东西还蛮多啊,好多好多的谜题:865:。
然后,本节重点来了,呵呵,在boss_action库,把mage的动作给抄进去。这次对于mage就先用按帧定义其动画的方式吧,时间参数就先不填了,呵呵,只填各个动作名称、开始与结束帧数。
好了,这就定义好了,如何在程序里面依靠数据库的记录,来实现各个动作的播放呢???
忽然觉得写烦了。。。。。。。下一节再继续写,呵呵。
先来个mage在我的程序的实现图,之前的小白人太丑啦,换上mage,稍微好看一点点,呵呵。。。。。。。。

