cocos2dx3.0 打飞机

前端之家收集整理的这篇文章主要介绍了cocos2dx3.0 打飞机前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

cocos2dx3.0 + vs2013 简单打飞机游戏
本文地址:http://www.jb51.cc/article/p-kzfawcay-wk.html


游戏资源,借用了微信打飞机的图库
初版源码地址:https://github.com/doctording/cocos2dx_plane_cpp


滚动背景问题:


持续按键,执行动作

例如:需要移动时,若一直按着A键,那么飞机将一直往左移动

解决方案:
设置一个变量,标识A键是否被按下,在update()方法中执行左移动作

// 键盘事件
    auto listenerKeyPad @H_404_22@= EventListenerKeyboard::create();
    listenerKeyPad@H_404_22@->onKeyPressed @H_404_22@= CC_CALLBACK_2(Bg::onKeyPressed,this);
    listenerKeyPad@H_404_22@->onKeyReleased @H_404_22@= CC_CALLBACK_2(Bg::onKeyReleased,this);
    _eventDispatcher@H_404_22@->addEventListenerWithSceneGraPHPriority(listenerKeyPad,this);

    // 按键是否按下
    isAdown @H_404_22@= 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

原文链接:https://www.f2er.com/cocos2dx/339377.html

猜你在找的Cocos2d-x相关文章