码迷,mamicode.com
首页 > 其他好文 > 详细

cocos2dx3.0 打飞机

时间:2016-07-29 15:44:13      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

cocos2dx3.0 + vs2013 简单打飞机游戏
本文地址:http://blog.csdn.net/qq_26437925/article/details/52059069


游戏资源,借用了微信打飞机的图库
初版源码地址: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‘);
    //...
}

关于子弹,敌方飞机的管理

显然要自己定义子弹(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
http://www.zaojiahua.com/add-bullets-and-manager.html

cocos2dx3.0 打飞机

标签:

原文地址:http://blog.csdn.net/qq_26437925/article/details/52059069

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!