【cocos2d-x 3.7 飞机大战】 决战南海I (三) 敌机实现
如今来实现敌机类
敌机和我方飞机相似,具有生命值、能够发射子弹。而且有自己的运动轨迹。事实上能够为它们设计一个共同的基类,这样能够更方便扩展。
不同的敌机,应设置不同的标识、属性
// 敌机生命值
const int ENEMY1_MAXLIFE = 1;
const int ENEMY2_MAXLIFE = 2;
const int ENEMY3_MAXLIFE = 5;
const int ENEMY4_MAXLIFE = 10;// 敌机分数
const int ENEMY1_SCORE = 1;
const int ENEMY2_SCORE = 6;
const int ENEMY3_SCORE = 20;
const int ENEMY4_SCORE = 50;
// 敌机类型
enum EnemyType
{Enemy1 = 1,Enemy2,Enemy3,Enemy4,
};
头文件里的主要函数
void setEnemyByType(EnemyType enType);
Sprite* getSprite();int getLife();
void loseLife();
Rect getBoundingBox();
函数的实现
void Enemy::setEnemyByType(EnemyType enType)
{switch (enType){case Enemy1:pEnemySprite = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy1.png"));nLife = ENEMY1_MAXLIFE;break;case Enemy2:pEnemySprite = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy2.png"));nLife = ENEMY2_MAXLIFE;break;case Enemy3:pEnemySprite = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy3.png"));nLife = ENEMY3_MAXLIFE;break;case Enemy4:pEnemySprite = Sprite::createWithSpriteFrame(SpriteFrameCache::getInstance()->getSpriteFrameByName("enemy4.png"));nLife = ENEMY4_MAXLIFE;break;default:return;break;}this->addChild(pEnemySprite);Size winSize = Director::getInstance()->getWinSize();Size enemySize = pEnemySprite->getContentSize();int minX = enemySize.width / 2;int maxX = winSize.width - enemySize.width / 2;int rangeX = maxX - minX;int actualX = (rand() % rangeX) + minX;// 设置敌机Node方位 Node包括Spritethis->setPosition(Point(actualX, winSize.height - enemySize.height / 2));
}bool Enemy::init()
{bool pRet = true;if (!Node::init()){pRet = false;}return pRet;
}Sprite* Enemy::getSprite()
{return pEnemySprite;
}int Enemy::getLife()
{return nLife;
}void Enemy::loseLife()
{--nLife;
}Rect Enemy::getBoundingBox()
{Rect rect = pEnemySprite->boundingBox();Point pos = this->convertToWorldSpace(rect.origin);Rect enemyRect(pos.x, pos.y, rect.size.width, rect.size.height);return enemyRect;
}
依据敌机类型,绑定对应的图片和生命值,对于我方飞机。假设想依据生命值来设定不同的飞机样式,也能够通过此类方法。
【cocos2d-x 3.7 飞机大战】 决战南海I (三) 敌机实现相关推荐
- Cocos2d-x 3.2 lua飞机大战开发实例(三)道具的掉落,碰撞检测,声音,分数,爆炸效果,完善游戏的功能细节
Cocos2d-X 3.2 lua语言飞机大战开发实例(三) 7.添加声音,更新分数,添加爆炸效果,道具的掉落.道具的碰撞检测等完善游戏功能 爆炸的效果添加 首先需要在GameData ...
- 白鹭引擎开发飞机大战详尽教程(三创建飞机)
简介 本教程是以飞机大战小游戏作为白鹭的入门,详细的按笔者的开发思路,一步步讲解游戏的开发步骤,内容基本涵盖了白鹭引擎提供的能力,包括界面可视化开发.事件派发.粒子播放(爆炸效果).龙骨帧动画. ...
- java 中飞机大战碰撞检测,飞机大战开发04子弹与敌机的碰撞检测
先是敌机与玩家子弹的碰撞检测: 代码: GameLayer.h void GameLayer::update(float dt) { for (int i = 0 ;i < m_pEnermyV ...
- cocos2d-x 3.2 |飞机大战:技能
cocos2d-x 3.2|飞机大战:技能 前情提要:飞机大战第四篇 实现敌机掉落技能 如下: 新建类----->Tool 第一步:技能类 Tool.h #include <stdio.h ...
- 微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js)
微信小游戏 demo 飞机大战 代码分析(四)(enemy.js, bullet.js, index.js) 微信小游戏 demo 飞机大战 代码分析(一)(main.js) 微信小游戏 demo 飞 ...
- 白鹭引擎开发飞机大战详尽教程(四控制飞机移动)
简介 本教程是以飞机大战小游戏作为白鹭的入门,详细的按笔者的开发思路,一步步讲解游戏的开发步骤,内容基本涵盖了白鹭引擎提供的能力,包括界面可视化开发.事件派发.粒子播放(爆炸效果).龙骨帧动画. ...
- 使用小程序制作一个飞机大战小游戏
此文主要基于微信小程序制作一个飞机大战小游戏,上手即用,操作简单. 一.创建小程序 二.页面实现 三.代码块 一.创建小程序 访问微信公众平台,点击账号注册. 选择小程序,并在表单填写所需的各项信息进 ...
- 用pycharm写飞机大战
用pycharm写飞机大战 以下是源代码 设置敌机图片库常量元组 创建所有显示的图形父类Model 背景类 玩家类 敌机类 子弹类 爆炸效果类 设置测试类入口操作 设置敌机图片库常量元组 创建所有显示 ...
- 第094讲: Pygame:飞机大战5 | 学习记录(小甲鱼零基础入门学习Python)
我们接下来在游戏界面的左上角设置一个得分显示区域,实时显示玩家得分,我们的规则如下: 击落小中大敌机分别可以获得1000,6000,10000分. 我们现在main 函数中添加一个 score 变量统 ...
- cocos2dx实现经典飞机大战
游戏开始层 #ifndef __LayerGameStart_H__ #define __LayerGameStart_H__ #include "cocos2d.h" USING ...
最新文章
- 2017年第六届数学中国数学建模国际赛(小美赛)C题解题思路
- Error: Aesthetics must be either length 1 or the same as the data (5): fill
- rdd数据存内存 数据量_spark系列:spark core 数据交互技术点(数据模型)
- SDK Build Tools revision (19.0.3) is too low for project Minimum required is 19.1.0
- HTML表单提交规则
- [react] 可以使用TypeScript写React应用吗?怎么操作?
- html风车相册代码,Css Html 大风车(示例代码)
- erlang的gb_trees源码解析
- linux挂载VMFS硬盘,linux – ESX Guest中的硬件磁盘错误,在vmfs支持的驱动器上……这怎么可能?...
- 深度学习-吴恩达-笔记-7-超参数调试、Batch正则化和程序框架
- 推荐21个顶级的Vue UI库!
- Pycharm 转化ui文件为py文件:报错Error in input file: not well-formed (invalid token): line 1, column 1
- TwinCAT3安装教程-EtherCAT学习
- python常见函数抽样_Python中从列表中随机抽样函数的语法
- [latex]参考文献格式
- 【React】React全家桶(八)React Router 6
- mysql 只读_MySQL设置只读模式
- 【机器学习】五种超参数优化技巧
- 漏洞工具包2015年态势回顾:规模与分布
- Java实现根据Word模板填充表格数据(poi方式),以及doc和docx转PDF,最全最详细版本,解决外部引用jar在linux上报ClassNotFound的问题。