设为首页 加入收藏

TOP

仿《雷霆战机》飞行射击手游开发--GameObject(二)
2017-10-12 18:14:47 】 浏览:8054
Tags:《雷霆战机》 飞行 射击 开发 --GameObject
Instance()->getSpriteFrameByName(fileList[i]); 19 if (NULL == pFrame) 20 { 21 continue; 22 } 23 animation->addSpriteFrame(pFrame); 24 } 25 26 //设置重复 27 Animate* animate = Animate::create(animation); 28 Repeat* repeat = Repeat::create(animate, CC_REPEAT_FOREVER); 29 m_pAnimateSequence = Sequence::create(repeat, NULL); 30 m_pAnimateSequence->retain(); 31 runAction(m_pAnimateSequence); 32 } 33 34 return true; 35 }

这个函数是通过帧序列来初始化。这里有两个输入参数:fileList是图片列表,dura是每张图片之间个时间间隔。如何是骨骼动画呢?看下面这个代码:

 1 bool GameObject::initArmature(const std::string& armatureName, float scale)
 2 {
 3     if (armatureName.length() <= 0)
 4     {
 5         return true;
 6     }
 7 
 8     m_pArmature = cocostudio::Armature::create(armatureName);
 9     m_pArmature->setPosition(getContentSize() / 2);
10     m_pArmature->getAnimation()->play(GlobalData::getInstance()->getArmatureData(armatureName)->defaultAction);
11     m_pArmature->setScale(scale);
12 
13     addChild(m_pArmature);
14 
15     return true;
16 }

    首先通过骨骼动画的名称armatureName创建骨骼动画,然后执行默认动作defaultAction(defaultAction是从配置文件中获取的,配置文件的读写将在以后详述)。最后把骨骼动画添加到Sprite上。

    这里就有一个疑问了,为什么既要支持帧序列动画,又要支持骨骼动画呢?我们知道骨骼动画的表现形式比帧序列动画更丰富,但是随之而来的问题就是骨骼动画更占资源。如果只有一个简单的动画,或者像子弹那样速度比较快并且数量比较多的游戏对象,应该尽量使用帧序列动画,甚至对于子弹来说,只用单张图片来表现就可以了,根本用不着动画。而对于玩家飞机、boss来说,因为涉及到变形,那就不得不用骨骼动画了。

    另外,这里也有一个可以优化的地方。我们可以把GameObject继承自Node,当游戏对象是序列帧动画时,就添加一个Sprite子节点,如果是骨骼动画,就添加一个Armature子节点。

 下载参考代码

 

转载请注明:http://www.cnblogs.com/thorqq/p/5646509.html 

下一篇开始,我们将逐个介绍GameObject的子类

 

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇习题:codevs 1035 火车停留解题.. 下一篇比较X与Y的大小,绝对精准!!!..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目