小小菜之Cocos2d-x游戏开发旅程——项目实例:飞机大战(1)

1.场景跳转及菜单场景

今天,给大家讲解一下一款纵版射击类游戏——飞机大战。
首先,我们来新建一个项目,如何新建项目呢?大家应该都会吧
cocos new -p com.game.plane -d ~/Desktop -l cpp PlaneGame

项目创建好了之后,打开项目文件下
proj.ios_mac文件->PlaneGame.xcodeproj。打开项目,在Xcode中点击左上角播放按钮开始编译,编译时间稍长,我们利用这里时间讲解一下飞机大战的需求。

这款游戏有四个场景,菜单场景,游戏场景,帮助场景和游戏关于场景。

菜单场景为主界面,有3个菜单条目,分别是 开始游戏,游戏帮助,游戏关于。分别跳转到不同的场景

游戏场景,我们的游戏逻辑全部在游戏场景中编写。首先有一架玩家控制的飞机,向上飞;可以发射子弹,子弹向上飞。从上方会掉落敌机。需要打掉敌机。

帮助场景,对飞机大战游戏的玩法作介绍

关于场景,显示开发者的信息

首先,我们中菜单场景MenuScene中添加一个背景

    auto sprite = Sprite::create("menu.png");
    sprite->setPosition(Vec2::ZERO);
    sprite->setAnchorPoint(Vec2::ZERO);
    this->addChild(sprite, 0);

然后在屏幕上添加菜单,具有3个菜单条目,start,help ,about分别跳转到3个场景

//添加菜单条目
    auto start = MenuItemFont::create("start" , CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
    auto help = MenuItemFont::create("help" , CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
    auto about = MenuItemFont::create("about" , CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));

    //设置菜单的坐标
    start->setPosition(visibleSize.width/2 , visibleSize.height/2);
    help->setPosition(visibleSize.width/2 , visibleSize.height/2 - 100);
    about->setPosition(visibleSize.width/2 , visibleSize.height/2 - 200);

    start->setColor(Color3B::BLACK);
    help->setColor(Color3B::BLACK);
    about->setColor(Color3B::BLACK);

    start->setTag(TAG_START);
    help->setTag(TAG_HELP);
    about->setTag(TAG_ABOUT);


    auto menu = Menu::create(start , help , about, NULL);
    menu->setPosition(Vec2::ZERO);
    this->addChild(menu, 1);

接下我们需要对菜单条目进行回调函数的实现
先新建3个场景 GameScene , HelpScene , AboutScene
接下来是菜单的回调函数

void HelloWorld::menuCloseCallback(Ref* pSender)
{

    auto nowMenu = (MenuItemFont*)pSender;
    switch (nowMenu->getTag()) {
        case TAG_START:
        {
            auto s = Game::createScene();
            Director::getInstance()->replaceScene(s);
        }
            break;
        case TAG_HELP:
        {
            auto s = Help::createScene();
            Director::getInstance()->replaceScene(s);
        }
            break;
        case TAG_ABOUT:
        {
            auto s = About::createScene();
            Director::getInstance()->replaceScene(s);
        }
            break;

        default:
            break;
    }


}

这样就可以从主菜单往各个场景跳转了

未完待续。。。。

—————–9秒学院学习日志

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值