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秒学院学习日志