cocos2dx3.0 + vs2013 简单打飞机游戏
本文地址:http://www.jb51.cc/article/p-kzfawcay-wk.html
游戏资源,借用了微信打飞机的图库
初版源码地址:https://github.com/doctording/cocos2dx_plane_cpp
例如:需要移动时,若一直按着A键,那么飞机将一直往左移动
解决方案:
设置一个变量,标识A键是否被按下,在update()方法中执行左移动作
// 键盘事件 auto ListenerKeyPad = EventListenerKeyboard::create(); ListenerKeyPad->onKeypressed = CC_CALLBACK_2(Bg::onKeypressed,this); ListenerKeyPad->onkeyreleased = CC_CALLBACK_2(Bg::onkeyreleased,this); _eventdispatcher->addEventListenerWithSceneGraPHPriority(ListenerKeyPad,this); // 按键是否按下 isAdown = false;
// 按键 按下voID Bg::onKeypressed(EventKeyboard::KeyCode keycode,cocos2d::Event *event){ switch (keycode) { case EventKeyboard::KeyCode::KEY_A: //Director::getInstance()->pause(); //this->planeLayer->moveleftOrRight('A'); isAdown = true; break; //... }}
//按键 释放voID Bg::onkeyreleased(EventKeyboard::KeyCode keycode,cocos2d::Event *event){ switch (keycode) { case EventKeyboard::KeyCode::KEY_A: isAdown = false; break; //... }}
voID Bg::update(float delta){ // 如果A键出于按下状态,则一直左移 if (isAdown) this->planeLayer->moveleftOrRight('A'); //...}关于子d,敌方飞机的管理
显然要自己定义子d(Bullet) 和 敌机(Enemy)类,(Bullet,Enemy可以继承Sprite 和 Node)
因为将会有很多子d和敌机,必须建立管理类,
为 碰撞 和 销毁对象
管理类 采用 单例模式,头文件如下
#include "cocos2d.h"#include "Bullet.h"#include "Enemy.h"USING_NS_CC;class Manager {public: static Manager * getInstance();// 得到实例 static voID Manager::freeInstance(voID);//销毁实例public: static Manager * m_manager; Manager(); bool init();public: Vector<Bullet *> m_bulletVector; Vector<Bullet *> & getBulletVector(){ return m_bulletVector; }; Vector<EnemyBase *> m_enemyVector; Vector<EnemyBase *> & getEnemyVector(){ return m_enemyVector; };};
采用Vector Array等数据结构存储所有的对象,当碰撞,出界等时,从中删除,
帧动画,各种动作(move,blink),碰撞检测,定时器等等基础知识问题参考文章
http://blog.csdn.net/column/details/jackyairplane.html
http://www.zaojiahua.com/add-bullets-and-manager.html
以上是内存溢出为你收集整理的cocos2dx3.0 打飞机全部内容,希望文章能够帮你解决cocos2dx3.0 打飞机所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)