这个游戏是cocos2d-x官网上的一个demo,作为新手入门是个非常不错的例子,为了学习,接下来把这个demo在win32下重新实现一遍,开发工具使用vs2010,最后移植到android平台。游戏中的图片和音乐资源可以在https://github.com/flyingpacer/Cocos2dxSimpleGame获取。

下面简单介绍一下cocos2d-x的基本对象和这个游戏用到的相关知识,可以先了解这个游戏的主要逻辑和结构:创建游戏场景,在场景上添加一个或者多个层,在指定层上添加精灵、菜单、文字,为精灵和文字执行某个动作(移动),检测玩家触屏事件,开启任务调度执行碰撞检测和更新数据,通过导演类管理和切换场景等等。

(1)场景(CCScene)

就是游戏的关卡,也可以表示一个界面。你可以只创建一个场景也可以创建多个场景。它是构成游戏的画面,一般是先绘制一个场景,然后在场景中叠加或组合一个或者多个层。

(2)层(CCLayer)

我们的游戏内容一般是显示在层上的,通过叠加多个层来实现不同的效果。可以设置层的叠加顺序,处理事件响应机制。cocos2d-x提供了一些公用层:菜单层,颜色层等。每一层可以包含各式各样的内容要素:文本、精灵、地图等。

(3)精灵(CCSprite)

精灵是整个游戏中的核心对象,如:敌机、英雄、子弹等,精灵就是一些可以不断变化的图片,而所谓游戏,就是玩家操作一个或多个精灵与其他玩家或者系统控制的精灵进行互动。

(4)导演(CCDirector)

cocos2d-x中导演类CCDirector是个单例,这里主要用来管理和显示场景的,还提供一些常用的属性,如获取窗口的宽高等。

(5)任务调度机制

通常在游戏中需要实现一个计时器,以指定的时间间隔不停的调用某个指定的回调函数,来改变屏幕的显示或者进行数据处理。cocos2d-x提供了内置的任务调度机制,即CCNode的schedule成员函数。如:

this->schedule(schedule_selector(GameScene::update), 1.0f);

每隔1秒执行一次update函数,如果不指定时间则每一帧执行一次。

(6)动作(CCAction)

就是精灵拥有的动作,如:子弹移动、飞机飞行等。

 

这个游戏很简单,主要的功能如下:

(1)在屏幕最左端绘制一个英雄精灵,可以发子弹攻击敌人

(2)以一定的时间间隔绘制敌人精灵,敌人在最右端随机位置出现,然后以随即的速度运动到最左端

(3)玩家点击屏幕任一位置,精灵可朝该放下发出子弹,击中敌人则敌人死亡,玩家分数+1

(4)给游戏添加背景音乐和发子弹的音效

(5)如果玩家消灭的敌人数大于n,则在屏幕上显示“You Win”,如果有敌人穿过屏幕到达最左端,则游戏结束,提示”You Lose”.

最终效果如下图所示:

1. win32平台

2.Android平台

cocos2d-x手游性能优化总结

近段时间在使用cocos2d-x开发2D手游,技术方案使用的是cocos2d-x+lua,因为游戏使用的是cocos2d-x 2.1.5版本,有些优化方案在最新版的cocos2d-x版本已经实现...

阅读全文

cocos2dx-html5 实现网页版flappy bird游戏

我也是第一次使用cocos2d_html5,对js和html5也不熟,看引擎自带的例子和引擎源码,边学边做,如果使用过cocos2d-x的话,完成这个游戏还是十分简单的。游戏体...

阅读全文

【cocos2d-x开发实战 特训99-终结篇】移植到android平台和添加admob广告

上一篇已经完成特性99在win32平台下的开发,现在把它移植到android上,首先修改Android.mk文件,内容如下: LOCAL_PATH := $(call my-dir) include $(CLEAR_...

阅读全文

欢迎留言