cocos2dx 3.0 飞机大战
因为课程须要。然后又水平有限。所以写了个飞机大战。加上不会画画。所以图片资源也是从微信apk解压出来的,设计思路參考的偶尔e网事。
闲话不说。先讲一下设计。大体上一共分为3个场景。场景以下是Layer
開始场景:WelcomeScene -->WelcomeLayer 类似欢迎界面
游戏主场景:GameScene --> GameLayer 游戏元素加入 和 碰撞检測
结束场景:GameOverScene -->GameOverLayer
然后是游戏的元素,在GameLayer加入,一个分为4个Layer:
PlaneLayer:主角层
EnemyLayer:敌机层 ,分为3种,每种敌机生命值不一样
UFOLayer: 道具层,bullet和加bomb
BulletLayer:子弹层 bullet 和mutiBullet
然后简单讲一下碰撞检測的实现:
if(bullet->boundingBox().intersectsRect(enemy1->getBoundingBox())){
if(enemy1->getLife() == 1){
enemy1->loseLife();
bulletsToDelete->addObject(bullet);
enemy1ToDelete->addObject(enemy1);
score += ENEMY1_SCORE;
this->mControlLayer->updateScore(score);
}
}
Rect Enemy::getBoundingBox(){
Rect rect = this->m_sprite->boundingBox();
Point pos = this->convertToWorldSpace(rect.origin);
return Rect(pos.x, pos.y, rect.size.width, rect.size.height);
}
还有再来就是子弹层的处理:
子弹发射须要步骤:1.加入子弹,2.移动子弹。3移除子弹
因为须要源源不断的发射子弹,所以将子弹加入到一个SpriteBatchNode节点中。然后在这个SpriteBatchNode节点对子弹进行加入,移动,和移除,这样子做的优点是仅仅须要渲染一次。减少内存消耗
auto texture = TextureCache::getInstance()->textureForKey("shoot.png");
bulletBatchNode = SpriteBatchNode::createWithTexture(texture);
this->addChild(bulletBatchNode);
然后再讲一下图片资源的处理:
下载这个工具:plist解析工具
将微信须要的资源解析出来。然后能够用photoshop处理一下,哈哈。能够将微信的图片去掉,随便p上自己的名字
然后用TexturePacker打包。恩。大概就像这样子
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2h1bl9memxs/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
最后再讲一下编译成androidproject的步骤和细节:
1.先在Android.mk文件里加入全部必须的cpp
2.记得在AppDelegate cpp 中加入分辨率适应
glview->setDesignResolutionSize(480,800,ResolutionPolicy::SHOW_ALL);
3.在proj.android目录以下改动AndroidManifest.xml 竖屏属性:
android:screenOrientation="portrait"
4.cmd到project文件夹。命令:cocos compile -p android -j 4
源代码:飞机大战
cocos2dx 3.0 飞机大战的更多相关文章
- cocos2dx实现经典飞机大战
游戏开始层 #ifndef __LayerGameStart_H__ #define __LayerGameStart_H__ #include "cocos2d.h" USING ...
- 【cocos2d-x 3.7 飞机大战】 决战南海I (十) 游戏主场景
主场景要包括其它类的头文件 #include "cocos2d.h" #include "MyPlane.h" #include "Bullet.h& ...
- 【cocos2d-x 3.7 飞机大战】 决战南海I (二) 我方飞机的实现
在上一篇中.我们实现了游戏的開始界面,接下来要实现游戏的主界面.主界面包括地图.我方飞机.敌机等 先来实现我方飞机 我方飞机具有哪些属性呢? 飞机要具有生命值.要有动画效果(尾部喷气),飞机不可以飞出 ...
- 【cocos2d-x 3.7 飞机大战】 决战南海I (四) 敌机管理
敌方飞机应该不定时的出现,有自己的生命周期.运动轨迹.这个类用来管理敌机的产生.移动.爆炸.销毁等. 敌机管理类主要函数例如以下 //绑定控制器(更新分数) void bindController(C ...
- 【cocos2d-x 3.7 飞机大战】 决战南海I (七) 控制器的实现
控制器中的功能并不多,主要是以下这些 //对玩家分数的操作 CC_SYNTHESIZE_READONLY(SaveData *, m_saveData, SaveData); void update( ...
- 【cocos2d-x 3.7 飞机大战】 决战南海I (三) 敌机实现
如今来实现敌机类 敌机和我方飞机相似,具有生命值.能够发射子弹.而且有自己的运动轨迹.事实上能够为它们设计一个共同的基类,这样能够更方便扩展. 不同的敌机,应设置不同的标识.属性 // 敌机生命值 c ...
- 【cocos2d-x 3.7 飞机大战】 决战南海I (八) 背景移动
採用双层背景.这样效果更好 .h class BackgroundMove : public Layer { public: BackgroundMove(); ~BackgroundMove(); ...
- 【cocos2d-x 3.7 飞机大战】 决战南海I (十二) 游戏结束场景
游戏结束的时候,要显示分数.还要可以选择是返回主场景还是退出游戏 // 退出游戏 void menuCloseCallback(cocos2d::Ref* pSender); // 返回主界面 voi ...
- 基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(中)
接<基于Cocos2d-x-1.0.1的飞机大战游戏开发实例(上)> 三.代码分析 1.界面初始化 bool PlaneWarGame::init() { bool bRet = fals ...
随机推荐
- 增强Delphi.RemObject.DataAbstract的脚本功能:多数据库同时操作
我们知道,通过Schema,一个DataAbstracService对应一个数据库:一个服务器可以包含多个DataAbstracService,从而实现对多个数据库的操作.通过事件处理我们可以在一个D ...
- VCS引起的oracle数据库异常重新启动一例
1. 环境描写叙述 操作系统版本号:SUSE Linux Enterprise Server 10 sp2 (x86_64) 数据库版本号:Oracle 11.1.0.7.16 VCS版本号:5.1 ...
- js中new构造函数的研究
<javascript高级编程>里对new操作符的解释: new操作符会让构造函数产生如下变化: 1. 创建一个新对象: 2. 将构造函数的作用域赋给新对象(因此t ...
- flash builder 4 编译器参数
accessible=true|false 是否具有可理解性(如为残疾人提供方便的性能) actionscript-file-encoding | 设置文件编码,如Shitf_JIS advanced ...
- 「Foundation」结构体
一.基本知识 Foundation—基础框架.框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础. 如果要想使用foundation框架中的数据类型,那么包含它的主头文 ...
- 在SAE上搭建自定义版本WordPress, 并用SAE Storage代替WordPress Uploads
问题由来: 1. SAE中默认的WP for SAE版本太低, 导致某些基于新版本WordPress的插件不能使用. 2. SAE中单个APP的代码空间仅有100M. 将WordPress中uploa ...
- HTML5 DTD
HTML5/HTML 4.01/XHTML 元素和有效的 DTD 下面的表格列出了所有的 HTML5/HTML 4.01/XHTML 元素,以及它们会出现在什么文档类型 (DTD) 中: 标签 HTM ...
- 两台linux机器时间同步
Linux自带了ntp服务 -- /etc/init.d/ntpd,这个服务不仅可以设置让本机和某台/某些机器做时间同步,他本身还可以扮演一个time server的角色,让其他机器和他同步时间. 配 ...
- 删除缓存内容----unrecognized selector sent to instance
这条错误主要还得看unrecognized前面,,我的时[NSNumber-length...]其实是变量类型错误.. 无法识别选择器发送实例,,本来意思就是你的controllerview找不到视图 ...
- hibernate 缓存 4.3
缓存在hibernate中是天生就有的,是一级缓存,当session关闭时一级缓存就失效了 一级缓存是内置的,生效范围是在同一个session中才行.二级缓存是需要配置才有 判断当前项在不在一级缓存中 ...