cocos2d-x游戏开发系列教程-坦克大战游戏之虚拟手柄的显示
上篇文章我们有了坦克,但是没有手柄,无法控制坦克。
1.这篇我们编写虚拟手柄来控制坦克。头文件大致内容如下:
#define RES_PADDLE_LEFT "paddle/left.png"
#define RES_PADDLE_LEFT_PRESS "paddle/left_press.png"
#define RES_PADDLE_RIGHT "paddle/right.png"
#define RES_PADDLE_RIGHT_PRESS "paddle/right_press.png"
#define RES_PADDLE_UP "paddle/top.png"
#define RES_PADDLE_UP_PRESS "paddle/top_press.png"
#define RES_PADDLE_DOWN "paddle/buttom.png"
#define RES_PADDLE_DOWN_PRESS "paddle/buttom_press.png"
#define RES_PADDLE_FIRE "paddle/fire.png"
#define RES_PADDLE_FIRE_PRESS "paddle/fire_press.png"class Panel : public CCLayer
{
public:virtual bool init();CREATE_FUNC(Panel);
protected:Paddle* m_pPaddleUp;Paddle* m_pPaddleDown;Paddle* m_pPaddleLeft;Paddle* m_pPaddleRight;Paddle* m_pPaddleFire;
};
上面定义了上下左右按钮的图片,还记得我们写关卡选择按钮的Paddle吧,
下面定义了五个Paddle分别对应上下左右开火按钮。
2.我们在初始化函数init中,加载按钮图片,然后设置按钮图片对应的坐标。
代码如下:
bool Panel::init()
{CCLayer::init();//加载手柄按钮所需的图片CCTexture2D* paddleTexture = CCTextureCache::sharedTextureCache()->addImage(RES_PADDLE_UP);m_pPaddleUp = Paddle::paddleWithTexture(paddleTexture);paddleTexture = CCTextureCache::sharedTextureCache()->addImage(RES_PADDLE_DOWN);m_pPaddleDown = Paddle::paddleWithTexture(paddleTexture);paddleTexture = CCTextureCache::sharedTextureCache()->addImage(RES_PADDLE_LEFT);m_pPaddleLeft = Paddle::paddleWithTexture(paddleTexture);paddleTexture = CCTextureCache::sharedTextureCache()->addImage(RES_PADDLE_RIGHT);m_pPaddleRight = Paddle::paddleWithTexture(paddleTexture);paddleTexture = CCTextureCache::sharedTextureCache()->addImage(RES_PADDLE_FIRE);m_pPaddleFire = Paddle::paddleWithTexture(paddleTexture);CCSize size = getContentSize();//设置手柄上下左右按钮以及开火按钮的位置int localX[5] = { size.width*4.5f / 26, size.width*4.5f / 26, size.width*2.3f / 26, size.width*6.7f / 26, size.width*22.0f / 26 };int localY[5] = { size.height*6.7 / 26, size.height*2.3 / 26, size.height*4.5f / 26, size.height*4.5f / 26, size.height*5.0 / 26 };Paddle* paddle[] = { m_pPaddleUp, m_pPaddleDown, m_pPaddleLeft, m_pPaddleRight, m_pPaddleFire };for (int i = 0; i<sizeof(paddle) / sizeof(paddle[0]); ++i){addChild(paddle[i]);paddle[i]->setPosition(ccp(localX[i], localY[i]));CCSize szPaddle = paddle[i]->getContentSize();paddle[i]->setScale(size.height * 4.5f / 26 / szPaddle.height);}return true;
}
3.最后再写一个函数获取按钮的状态,这样就知道当前按下了那个按钮:
在之前我们定义一组命令,按到那个按钮就返回什么命令:
enum enumOrder
{cmdNothing,cmdGoUP,cmdGoDown,cmdGoLeft,cmdGoRight,cmdFire
};
4.再添加一个enumOrder getOrder();函数,实现如下:
enumOrder Panel::getOrder()
{enumOrder order = cmdNothing;if (m_pPaddleUp->getstate() == kPaddleStateGrabbed)order = cmdGoUP;else if (m_pPaddleDown->getstate() == kPaddleStateGrabbed)order = cmdGoDown;else if (m_pPaddleLeft->getstate() == kPaddleStateGrabbed)order = cmdGoLeft;else if (m_pPaddleRight->getstate() == kPaddleStateGrabbed)order = cmdGoRight;else if (m_pPaddleFire->getstate() == kPaddleStateGrabbed)order = cmdFire;return order;
}
5,在ChoiceScene场景中添加成员变量Panel* mLayerPanel;,
然后在 ChoiceScene的init函数下面加上两行代码即可显示虚拟手柄:
//添加虚拟手柄的显示mLayerPanel = Panel::create();addChild(mLayerPanel, 3);
显示效果图如下:
完整代码下载地址:
http://download.csdn.net/detail/yincheng01/6749935
cocos2d-x游戏开发系列教程-坦克大战游戏之虚拟手柄的显示相关推荐
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克的显示
1.先定义坦克的一些属性 class Tank : public CCSprite { public :Tank();~Tank();static Tank* createTankWithTankTy ...
- HTML5游戏开发系列教程5(译)
原文地址:http://www.script-tutorials.com/html5-game-development-lesson-5/ 最终我决定准备下一篇游戏开发系列的文章,我们将继续使用can ...
- unity2d游戏开发系列教程:一、环境安装
从这篇文章开始,一步一步教大家从0开始通过2DGameKit项目进行2D游戏开发 第一步.环境安装 1.先使用手机下载Unity Connect并注册登陆 2.进入unity官网https://uni ...
- unity2d游戏开发系列教程:四、一个2D游戏所需要的主要功能(游戏框架)
目录 unity2d游戏开发系列教程:一.环境安装 unity2d游戏开发系列教程:二.新建工程并熟悉Unity编辑器常用功能 unity2d游戏开发系列教程:三.场景布置,增加怪物和机关 原文下载 ...
- unity2d游戏开发系列教程:三、场景布置,增加怪物和机关
目录 unity2d游戏开发系列教程:一.环境安装 unity2d游戏开发系列教程:二.新建工程并熟悉Unity编辑器常用功能 第一节.场景草地布置 先查看一下资源文件里都有什么,一会就要用到的 打开 ...
- unity2d游戏开发系列教程:二、新建工程并熟悉Unity编辑器常用功能
目录 unity2d游戏开发系列教程:一.环境安装 第一步.打开项目 耐心等待一小会 工程界面 第二步.创建第一个场景(第一关)进行试玩 点击图中标号1的运行按钮,即可简单试玩感受,操作如下 移动A, ...
- 100行JS代码实现❤坦克大战js小游戏源码 HTML5坦克大战游戏代码(HTML+CSS+JavaScript )
坦克大战js小游戏源码 HTML5坦克大战游戏代码(HTML+CSS+JavaScript ) HTML5坦克大战网页小游戏,完美还原小霸王学习机效果,以坦克战斗及保卫基地为主题,属于策略型类游戏. ...
- 一文教你使用java开发一款坦克大战游戏
导读:随着人们对生活质量的要求一天比一天高,为了让人们更好地开掘自身的智慧,游戏就此进入了大众的视野,在人们的生活中有着重要的位置,已然变得必不可少.游戏产业推动高新技术不断升级,极大地促进了经济的增 ...
- java开发一款坦克大战游戏
导读:随着人们对生活质量的要求一天比一天高,为了让人们更好地开掘自身的智慧,游戏就此进入了大众的视野,在人们的生活中有着重要的位置,已然变得必不可少.游戏产业推动高新技术不断升级,极大地促进了经济的增 ...
最新文章
- PYPL 二月榜单发布:最受欢迎的编程语言、IDE 和数据库都是哪些
- kl散度度量分布_强化学习新思潮1:值分布强化学习(04)
- 2022届互联网秋招备战
- 【高校宿舍管理系统】第十章 缺勤管理、报修管理、来访人员管理以及公告管理
- 开始用Flutter做游戏吧
- “小而美”背后的大道理:WebRAY崛起的深层次原因
- python安装模块方法_Python模块安装方法
- 在Docker里部署ReviewBoard4.0-RC
- 【转】Xposed+JustTrustMe关闭SSL证书验证解决无法抓取https包问题
- flash发布html快捷键,Flash菜单操作之快捷键
- windows10开机时出现你的设备遇到问题,需要重启
- 【新年新气象_新年CSDN第一篇】斯特林数简介及应用
- php 秒拍视频解析,新浪微博视频解析源码_秒拍视频站外调用可自定义广告
- Vue教程(三十九)vue-cli2脚手架安装
- matlab containers,matlab中的containers.Map()
- Android 渠道游戏 - 聚合SDK
- 分享133个ASP源码,总有一款适合您
- 牛客网 赛码网 js输入输出
- 两个L组成的括号?(取整符号)
- azure 配置vpn_ASP.NET和Azure中配置中的私有配置数据和连接字符串的最佳做法
热门文章
- 你也能看得懂的python算法书pdf_你也能看得懂的Python算法书最新章节_王硕著_掌阅小说网...
- tiup单机扩展多pd报错
- 一位27岁软件测试员,测试在职近5年,月薪不到2W,担心被应届生取代
- java计算机毕业设计交通非现场执法系统MyBatis+系统+LW文档+源码+调试部署
- topShelf 安装window服务
- 地理国情监测,arcpy将文件夹多个gdb的要素数据集Dataset下的要素类featureClass,使用FeatureClassToShapefile_conversion转换成shapefile
- 2021绥化高考成绩查询,绥化中考成绩查询2021
- 车站计算机的在线运行模式,车站计算机联锁仿真设计(一).pdf
- 用心理学解释用户行为
- 不安装cudnn可不可以_ubuntu16.04 安装NVIDIA和CUDA9.2 cudNN7.1