cocos2dx3.0 打飞机
cocos2dx3.0 + vs2013 简单打飞机游戏 游戏资源,借用了微信打飞机的图库 滚动背景问题:持续按键,执行动作例如:需要移动时,若一直按着A键,那么飞机将一直往左移动 解决方案: // 键盘事件
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');
//...
}
关于子弹,敌方飞机的管理显然要自己定义子弹(Bullet) 和 敌机(Enemy)类,(Bullet,Enemy可以继承Sprite 和 Node) 因为将会有很多子弹和敌机,必须建立管理类, 管理类 采用 单例模式,头文件如下 #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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |