【cocos2dx-3.0beta-制作flappybird】物理世界的美妙—游戏层的物理属性的设置
2014-03-20 21:25
471 查看
一、引言
Flappy Bird这款游戏,它的一个非常新颖的地方,就是充分利用了游戏世界的物理属性——小鸟不是水平飞行,而是同在物理世界里一样,受到重力的影响。所以其运动轨迹不是单一的直线,而是抛物线。二、给小鸟附加物理属性
那么,我们如何为小鸟添加上物理属性呢?事实上,强大的游戏引擎已经为我们做好了一切准备。且看如下代码:
//创建小鸟 this->bird = BirdSprite::getInstance(); this->bird->createBird();
//创建物理属性
PhysicsBody *body = PhysicsBody::create(); body->addShape(PhysicsShapeCircle::create(BIRD_RADIUS)); body->setDynamic(true); body->setLinearDamping(0.0f); body->setGravityEnable(false);
//将该物理属性附加到小鸟身上
this->bird->setPhysicsBody(body);
此外,游戏进行过程当中,每次点击屏莫的时候,给小鸟设置一个向上的初速度:
this->bird->getPhysicsBody()->setVelocity(Vect(0, 260));
在游戏的update函数中设置小鸟的旋转角度:
void GameLayer::rotateBird() { float verticalSpeed = this->bird->getPhysicsBody()->getVelocity().y; this->bird->setRotation(min(max(-90, (verticalSpeed*0.2 + 60)), 30)); }
三、给水管添加物理属性
与小鸟类似的,我们也需要对水管添加物理属性:auto body = PhysicsBody::create(); auto shapeBoxDown = PhysicsShapeBox::create(pipDown->getContentSize(),PHYSICSSHAPE_MATERIAL_DEFAULT, Point(0, PIP_HEIGHT + PIP_DISTANCE)); body->addShape(shapeBoxDown); body->addShape(PhysicsShapeBox::create(pipUp->getContentSize())); body->setDynamic(false); singlePip->setPhysicsBody(body);
四、小结
总体来说cocos2d-x3.0已经提供了很好的物理属性的支持了,所以给精灵添加物理属性也变得非常的简单了。有关详细代码,还请移步到github:https://github.com/OiteBoys/Earlybird
相关文章推荐
- 【cocos2dx-3.0beta-制作flappybird】一闪一闪亮晶晶—游戏金币闪烁效果实现
- 【cocos2dx-3.0beta-制作flappybird】玄关是必要的—游戏欢迎界面的创建
- 【cocos2dx-3.0beta-制作flappybird】让马里奥大叔来搬水管—在游戏层加入水管
- 【cocos2dx-3.0beta-制作flappybird】布告栏中的玄机—游戏状态层的设计与实现
- 【cocos2dx-3.0beta-制作flappybird】对不起,我的数学老师是体育老师兼职的—游戏中所用到的数字类封装
- 【cocos2dx-3.0beta-制作flappybird】我才不会告诉你我硬盘的秘密呢—游戏存储的实现
- 【cocos2dx-3.0beta-制作flappybird】千层饼的智慧—谈谈游戏主场景的分层以及最简单的背景层的实现
- 【cocos2dx-3.0beta-制作flappybird】终于要来正戏了—游戏层的设计和小鸟的加入
- 【cocos2dx-3.0beta-制作flappybird】——游戏控制层的设计以及控制层和游戏层的关系
- 【cocos2dx-3.0beta-制作flappybird】就要结束了吗—Android交叉编译以及后继
- 【cocos2dx-3.0beta-制作flappybird】就这么开始--开发环境的搭建素材的准备
- 【cocos2dx-3.0beta-制作flappybird】跟随时代的潮流,关于引擎升级
- 【cocos2dx-3.0beta-制作flappybird】英雄都是孤独的?--小鸟单例类的设计以及小鸟类的设计
- 关于【cocos2dx-3.0beta-制作flappybird】教程在3.2工程中出现找不到CCMenuItem.h的解决方法
- 关于【cocos2dx-3.0beta-制作flappybird】教程在3.2project中出现找不到CCMenuItem.h的解决方法
- 【cocos2dx-3.0beta-制作flappybird】尾随时代潮流,关于引擎升级
- 【cocos2dx-3.0beta-制作flappybird】未雨绸缪—Loading界面的写法
- 【cocos2dx-3.0beta-制作flappybird】——背景介绍
- coco2d-x 3.0游戏实例学习笔记 《跑酷》 第二步---游戏界面&全新的3.0物理世界
- 使用cocos2d-x3.0和物理引擎制作简单的platformer游戏