Cocos2d-x教程(17)-Box2D 物理引擎

来源:未知 责任编辑:责任编辑 发表时间:2014-01-06 18:19 点击:

欢迎加入 Cocos2d-x 交流群: 193411763 转载时请注明原文地址: http://blog.csdn.net/u012945598/article/details/17787243

物理引擎并非每款游戏的必需品,但它却可以更好的模拟现实世界的真实感。

此篇文章我们将初步讲解Box2D的使用方法。

想要精通Box2D并非简单的事情,但简单的使用Box2D却并非什么难事,首先我们需要了解几个常用的概念:

1.世界 b2World 所有的物理效果都是要在物理世界中模拟的,物理世界就是一个大集合,容纳所有刚体,夹具,形状等

2.物体 b2Body 也就是我们物理学中的刚体,一旦创建,则形态不会发生改变

3.形状 b2Shape 形状是依附于夹具的,具有摩擦(friction)和恢复(restitution)等属性,主要用于碰撞检测

4.夹具 b2Fixture 是一种把形状附加到物体上的关系,利用形状可以创建夹具,再将夹具加到物体之上,物体便拥有碰撞能力

5.关节 b2Join 可以将多个物体固定到一起,可以限定一个活动范围,常用属性有 限制(Limits) 和 马达(Motors)


注意事项:

1.物理世界依据的是牛顿定律,并独立于正常的渲染世界的,两个世界一个负责游戏画面渲染,一个负责物理模拟,他们之间存在数据交互。

2.不要试图在碰撞检测的发放中改变物体的状态,我们可以将需要删除的物体用容器保存起来,在驱动方法执行完后异步处理这些不需要的数据。

3.Box2D世界里的最佳物体大小是0.1~10个单位长度的物体,因此我们也应该尽量将物体大小设定在这个范围内,不应直接使用像素值,而应该一个转换率。我们在文件中声明一个宏定义 " #define PTM_RATIO 32 " 单位是像素/米


使用物理引擎的步骤:

1.初始化一个物理世界
2.创建一个精灵
3.为精灵设置夹具
4.为精灵设置身体

之后这个精灵便能够受物理效果的影响了。

下面新建一个工程,新建一个类,命名为Box2dHandler,我们将在该类中管理所有与物理引擎相关的内容。

我们习惯创建一个精灵类的派生类作为物理世界中的精灵对象,尽管这一步骤并非必须,但是你会发现有了这样的一个类,在之后处理数据时会方便很多。下面在Box2dHandler.h文件中引入头文件

#include "cocos2d.h"

#include "Box2D.h"

USING_NS_CC;

#define PTM_RATIO 32

加入下列代码:

\

我们在物理世界创建一个精灵时,便可以通过B2Sprite类来创建,当然前提是你希望这个对象受到物理效果的影响。<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+z8LD5s7Sw8e8zND41NouaM7EvP7W0MztvNNCb3gyZEhhbmRsZXLA4KOs1NpCb3gyZEhhbmRsZXLA4NbQvauw/Lqsy/nT0M/gudi1xM7vwO2y2df3oaM8L3A+CjxwPjxpbWcgc3JjPQ=="http://www.2cto.com/uploadfile/Collfiles/20140103/20140103134353167.jpg" alt="\">

注意第30行,我们创建了一个GLESDebugDraw的对象,这个类的封装是位于"GLES-Render.h"和"GLES-Render.cpp"文件中的,这两个文件需要我们手动引入,文件目录为:cocos2d-x-2.2.1/samples/Cpp/TestCpp/Classes/Box2DTestBed

下面我们将这些方法一一实现:

\


\


发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1