您的位置:首页 > 移动开发 > Cocos引擎

cocos2dx3.3开发FlappyBird总结九:欢迎场景(WelcomeScene)

2015-03-20 11:25 323 查看
欢迎场景的任务是无限滚动地面,小鸟原地挥动翅膀,显示开始游戏按钮,点击时才开始玩游戏。

先上图:




这个场景中,有一个标题:FlappyBird

一只小鸟,小鸟的颜色是随机生成三种中的一种

一个开始按钮

无限滚动的地面

在初始化时,生成当前时间来显示白天还是黑夜背景。

// Get the current time, judge whether now is day or night
  time_t t = time(NULL);
  tm *localTime = localtime(&t);
  int hour = localTime->tm_hour;

  std::string bgName;
  if (hour >= 6 && hour <= 17) {
    bgName = "bg_day";
  } else {
    bgName = "bg_night";
  }


要让地面无限滚动,那么就需要定时器了。

// Add a timer to update the land
  this->schedule(schedule_selector(WelcomeScene::scrollLand), 0.01f);


所谓无限滚动,就是重复利用,在离开屏幕时,又回到原始状态,如此反复而已。

// 每一个delta时间内,移动距离2,如果超出屏幕,又放到屏幕最右边,如此反复。
void WelcomeScene::scrollLand(float delta) {
  // Each delta, move 2.0f distance
  const float distance = 2.0f;
  _land1->setPositionX(_land1->getPositionX() - distance);
  _land2->setPositionX(_land1->getPositionX() + _land1->getContentSize().width - 2.0f);

  // 判断是否超出屏幕了
  if (_land2->getPositionX() <= 0) {
    _land1->setPositionX(0);
  }
}


点击玩游戏时,回调:

// 进入到游戏场景了
void WelcomeScene::menuStartCallback(cocos2d::Ref *pSender) {
  CocosDenshion::SimpleAudioEngine::getInstance()->playEffect("sfx_swooshing.ogg");
  this->removeChild(BirdSprite::getInstance());

  auto scene = GameScene::createScene();
  auto transitionScene = TransitionFade::create(1.0f, scene);
  Director::getInstance()->replaceScene(transitionScene);
}


下一步,说说游戏场景中背景层设计
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: