大佬教程收集整理的这篇文章主要介绍了cocos2dx3.3开发FlappyBird总结六:设计共享小鸟类(主角),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
主角小鸟有三种状态:idle、fly、die。
idle状态下,小鸟会挥动翅膀,原地不动,且不受重力的影响。
fly状态下,也就是游戏过程中小鸟移动,此状态下小鸟挥动翅膀飞行移动且受重力的影响。
die状态下,游戏结束了,小鸟死亡倒地了。
所以先设计一个枚举来表示小鸟的三种状态:
/** * The leading role,bird's three action state */
typedef enum {
kActionStatEIDle = 1,/* the idle state,wave wing but gravity */
kActionStateFly,/* the fly state,wave wing and be affected by gravity */
kActionStateDie /* the die state,the bird die in the ground */
} ActionState;
先重点说说创建小鸟对象方法:
// 小鸟有三种颜色,因此每次游戏开始时,会随机生成一种颜色.
// 然后创建小鸟精灵,如果创建成功,则创建小鸟主角在游戏中需要执行的动作:idle和wing。
bool BirdSprite::createBird() {
// Randomly generate a bird color
srand((unsigned)time(NULL));
int type = rand() % 3;
char birdName[10];
char birdNameFormat[10];
sprintf(birdName,"bird%d_%d",type,typE);
sprintf(birdNameFormat,"bird%d_%%d",typE);
auto spriteFrame = AtlasLoader::geTinstance()->getSpriteFrame(birdName);
// Create a bird sprite
auto isInitsuccessful = Sprite::initWithSpriteFrame(spriteFramE);
if (isInitsuccessful) {
// init idle status
// create the bird idle animation
auto animation = createAnimation(birdNameFormat,3,10);
_idleAction = RepeatForever::create(Animate::create(animation));
// create the bird waving wing animation
auto upAction = MoveBy::create(0.4f,Vec2(0,8));
auto downAction = upAction->reverse();
_wingAction = RepeatForever::create(Sequence::create(upAction,downAction,NULL));
return true;
}
return false;
}
接下来很重要的一个方法就是修改小鸟主角状态的方法:
// 修改小鸟的状态,会对应执行相应的动作
// idle状态,也就是游戏准备开始时的状态,小鸟挥动翅膀原地不动
// fly状态,游戏开始了,小鸟受重力影响,由玩家控制
// die状态,游戏结束,撤消小鸟所有的动作
void BirdSprite::setActionState(ActionState statE) {
_actionState = state;
switch (statE) {
case kActionStatEIDle:
// The idle state,the bird waves the wing and doesn't being affected by gravity
this->runAction(_idleAction);
this->runAction(_wingAction);
break;
case kActionStateFly:
// The fly state,the bird waves the wing,affected by gravity
this->stopAction(_wingAction);
this->getPhysicsBody()->setGravityEnable(true);
break;
case kActionStateDie:
// Thd die state,the bird get down to the ground.
this->stopAllActions();
break;
default:
break;
}
}
下一步,说说游戏的流程
以上是大佬教程为你收集整理的cocos2dx3.3开发FlappyBird总结六:设计共享小鸟类(主角)全部内容,希望文章能够帮你解决cocos2dx3.3开发FlappyBird总结六:设计共享小鸟类(主角)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。