版权归原作者所有 转载地址:http://dualface.qeeplay.com/?p=264
既然要用cocos2d,有些基本概念还是得弄清楚。以下内容参考了cocos2d的文档,并加入了我自己的理解和补充。
场景(Scene)和层(Layer)
游戏总是分成不同的片段,例如开场动画、游戏菜单、第一个关卡、结束画面等。将每一个片段封装为独立的场景,可以让游戏的整体结构更清晰,降低开发和维护成本。
在cocos2d中,场景由CCScene的继承类进行封装。场景通常不包含游戏逻辑,仅仅是做为一个容器,将不同的层组合到一起,最终呈现给玩家一个完整的画面。而层是更小一级的容器,包含了一定的游戏逻辑和需要呈现的精灵(Sprite)。
如果使用过Photoshop软件,就会发现cocos2d的层和Photoshop中的层概念几乎一样:
上图是一个由三个层组成的场景。由于在cocos2d中层的背景默认是透明的(上图中为了表示不同层用了半透明色彩),所以上面层的空白区域会透出下面层的内容。最终的结果如下图:
不同的层除了分割图像的表示,还对游戏逻辑进行了分割。例如上图中,云层和城市建筑两个层只需要做横向卷动就可以了。而包含精灵的层则需要对玩家的操作做出响应。
虽然从表面上看,场景和层没有太大区别。但是在开发时,明确的区分场景和层可以帮助我们实现更好的游戏内部结构。
而且在cocos2d中,CCScene和CCLayer还是存在一些显著的差异。CCScene仅仅是CCNode的继承类,而CCLayer则在CCNode的基础上添加了对多点触摸和加速计的支持。
精灵(Sprite)
精灵是一个呈现在屏幕上的图像,例如一朵云彩、一栋房屋、一个五角星。cocos2d提供了CCSprite类用于封装精灵。CCSprite可以完成图像显示、旋转、缩放、透明度设定、关键帧动画等功能。
光是显示图像还不够,精灵总是有自己的行为。一个跳动的小球、一个飞舞的蝴蝶,这些精灵的行为由开发者在CCSprite的继承类中实现。因此,一个CCSprite继承类不但封装了精灵的显示,还包含了精灵的逻辑。
对于一些常见的行为,cocos2d提供了CCAction系列类来简化开发。例如CCMoveTo可以控制精灵的移动,而CCJumpTo则实现了简单的跳跃效果。
导演(Director)
CCDirector用于控制场景的切换。例如开场画面结束后,就切换到游戏菜单场景。或者在关卡通过后切换到得分显示场景。
cocos2d概念总结
总结而言,开发者按照下面的模式来开发游戏:
- 用CCScene和CCLayer来组织游戏
- 在CCLayer的继承类中封装场景中的逻辑
- 用CCSprite来封装精灵的图像及其逻辑
- 用CCDriector控制游戏的流程