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

Cocos2d-X游戏【泰然网《跑酷》】JS到C++移植5:初始化物理世界【Chipmunk】

2013-12-17 20:10 597 查看
尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17382737

<捕鱼达人>回顾

【cocos2d-x
IOS游戏开发-捕鱼达人1】内容介绍

<城市跑酷>回顾

【cocos2d-x
IOS游戏开发-城市跑酷1】跑酷游戏介绍

上节回顾
Cocos2d-X游戏【泰然网《跑酷》】JS到C++移植4:游戏主场景的介绍

PlayLayer是PlayScene最重要的层。这层处理玩家输入,碰撞检测,物体运动等等。

# 初始化物理世界,让runner“跑”起来。

## why physics engine? why chipmunk?

物理引擎能让跑酷的跳起落下过程看起来更加证实。物理引擎里面包含了重力计算以及碰撞检测等。

Cocos2d-x支持的物理引擎有 Box2d 和 [Chipmunk](http://chipmunk-physics.net/).

chipmunk支持的能力要比Box2d多一些,这篇教程使用chipmunk来构建物理世界。

##开始创建chipmunk
加入头文件
新建一个文件globals.h, 后面我们将用来存放一些全局变量或定义。
#define g_groundHight 57
#define g_runnerStartX 80


## chipmunk的初始化

打开 PlayScene.h, 加入新成员变量

```
 // chipmunk space定义类成员
 cpSpace* space; 
```

整个游戏中只会用到一个物理空间,它将被PlayScene中的其它layer使用到。

所用它的初始化放在PlayScene.h是一个比较理想的位置。

在添加其他layer之前我们需要初始化好space,新加入了一个成员函数initPhysics。

```
//使用Chipmunk2D物理引擎。Cocos2d-x种有两套Chipmunk JSB API。
//一个是面向对象的,另一个是面向过程的。我们使用更加友好的面向对象接口

void PlayScene::initPhysics()
{
//面向对象的chipmunk API,用来创建一个物理世界
space = cpSpaceNew();
//设置物理世界的重力
space->gravity = cpv(0, -350);
//set up Walls
//跑酷所用的地面,chipmunk中使用静态形状来描述。从物理空间新建一个静态SegmentShape,然后将它添加到物理空间
//
// rogue shapes
// We have to free them manually
//
// bottom
cpShape *wallBottom = cpSegmentShapeNew( space->staticBody,
cpv(0,g_groundHight),// start point
cpv(4294967295, g_groundHight), // MAX INT:4294967295
0.0f);// thickness of wall
cpSpaceAddStaticShape(space, wallBottom);
}

```
gravity设置系统的重力,SegmentShape第一个参数用的space的staticBody来创建一个static的shape,
然后加入到space中,static的shape不受重力影响。

通过创建一个无限长的地面,runner将跑在上面。

启动“update”方法,update()方法每帧被调用。

我们在这里调用chipmunk setp方法是物理世界动起来

为了加载PlayScene, 我们需要打开”MainScene.cpp”, 添加下面的代码:

用下面的代码替换onPlay的实现:
void MainScene::onPlay(CCObject* pSender)
{
CCLOG("Start a new game!!!");

CCScene *playScene = PlayScene::scene();

//加载PlayScene
CCDirector::sharedDirector()->replaceScene(playScene);
}

调试并运行,点击“Play”按钮,屏幕将会显示一片黑。在下一章我们将添加些东西。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐