`
yidongkaifa
  • 浏览: 4064831 次
文章分类
社区版块
存档分类
最新评论

Box2D基本类型说明

 
阅读更多

原创文章,欢迎转载!转载请注明:转载自Cocos2D开发网--Cocos2Dev.com

原文链接地址:Box2D基本类型说明

刚体(rigid body)
一块十分坚硬的物质,它上面的任何两点之间的距离都是完全不变的。它们就像钻石那样坚硬。
刚体可以通过b2BodyDef.userData来创建。b2Shape.SetAsBox(width,height)指的是物体的半宽和半高,所以在计算时都要乘以2。由于Box2D本身的限制,运算时要进行长度换算。

形状(shape)
一块严格依附于物体(body)的 2D 碰撞几何结构(collisiong eometry)。形状具有摩擦(friction)和恢复(restitution)的材料性质。

约束(constraint)
一个约束(constraint)就是消除物体自由度的物理连接。在 2D中,一个物体有 3 个自由度。如果我 们把一个物体钉在墙上(像摆 那样) ,那我们就把它约束到了墙上。这样,此物体就只能绕着这个钉子旋 转,所以这个约束消除了它 2 个自由度。

接触约束(contact constraint)
一个防止刚体穿透,以及用于模拟摩擦(friction)和恢复(restitution)的特殊约束。你永远都不必创建 一个接触约束,它们会自动被 Box2D 创建。

关节(joint)
它是一种用于把两个或多个物体固定到一起的约束。Box2D 支持的关节类型有:旋转,棱柱,距离等 等。关节可以支持限制(limits)和马达(motors)。

关节限制(joint limit)
一个关节限制(joint limit)限定了一个关节的运动范围。例如人类的胳膊肘只能做某一范围角度的运动。

关节马达(joint motor)
一个关节马达能依照关节的自由度来驱动所连接的物体。例如,你可以使用一个马达来驱动一个肘的旋转。

世界(world)
一个物理世界就是物体,形状和约束相互作用的集合。Box2D 支持创建多个世界,但这通常是不必要 的。

积分器(integrator)
积分器在离散的时间点上模拟物理方程,它将 与游戏动画循环一同运行。通常来说游戏物理引擎需要至少 60Hz 的速度,也就是 1/60 的时间步。

约束求解器(constraint solver)
约束求解器用于解决模拟中的所有 约束,一次一个。要得到良好的解,需要迭代所有约束多次。建议的 Box2D 迭代次数是 10 次。

Box2D Body
创建好World后,可以向World内部添加任何球体或者盒子,以及你想到的任何形状的东西,那我就需要定义一个Body。
一个body体大概需要做2-4件事情:
1、定义一个形状
2、一个(x,y)的位置
3、角度
4、一个预制的Sprite对象
其中3、4是可选操作。这里我可能不会讲到Box2D内设的一些画图类库,因为我们在实际的操作中,可能用的都是自定义的。内设的类库一般用来模拟比较好,进行实际开发可能不适合,所以大家有想研究内设画图类库的可能需要自己去研究一下了。

Box2D b2ShapeDef
如果你想在你的游戏或者其他的什么中具有一些有特色的东西,你可以通过综合形状定义Body来制作一个Sprite。形状的定义,有3种类型的形状定义,他们都是扩展的b2ShapeDef基类。

b2BoxDef类具有4个重要的属性:

1、SetAsBox(设定边框):这是一个向量,本质上说他就是一个形状的中心坐标
2、Density(密度):在碰撞的等式中使用密度*面积=质量,密度如果是0或者null,将会是一个静止的对象。
3、Friction(摩擦力):这用来计算两个对象之间的摩擦,可以在0.0-1.0之间调整它们。
4、Restitution(弹性):这是调整对象弹性程度的属性,可以在0.0-1.0之间调整它们。

b2CircleDef类中有一个不同的属性,代替SetAsBox是他的Radius(半径)。

b2PolyDef类具有一个顶点数组(最大是8)来代替SetAsBox和Radius。这些顶点都是b2Vec2类型的对象。

Box2D注意事项

全局的对象的构造函数作了三件事情:
1、一个在b2AABB类中的实例构建的坐标系统
2、一个定义重力的向量,这是一个b2Vec2类构建的实例。
3、一个布尔变量来定义对象是否"沉迷"。(如果你设置为true,对象将会沉迷)。
4、执行Step()函数,每一帧都会更新所有的Body在world中的位置。
5、Box2D中的单位为米,30像素==1米。所以在box2D中经常会看到 坐标点乘以30,这样就不奇怪为什么用30而不是15或者20的了。

分享到:
评论

相关推荐

    Box2d中文说明

    Box2d中文说明

    Box2D 中文手册

    Box2D 中文手册,非常详细的Box2D文档,入门绝佳

    Box2d简介Box2d简介

    Box2d简介 Box2d简介 Box2d简介 Box2d简介

    Box2D_02_碰撞_box2D安卓快写代码_box2D_box2d碰撞_

    简单的box2D编程!快写c++代码软件

    BOX2D 物理游戏编程初学者指南 陈文登(高清,带目录)

    高清带目录《Box2D物理游戏编程初学者指南》系统地梳理学习Box2D物理游戏编程的各个知识点,并通过图解、问答、举例等形式深入浅出地讲解初学者觉得晦涩难懂的概念、术语。  《Box2D物理游戏编程初学者指南》最后,...

    box2d中文教程

    Box2D是一个用于游戏的2D刚体仿真库,它可以使物体的运动更加真实,让游戏场景看起来更具交互性。2D物理引擎能增强游戏世界中物体如多边形(砖块,三角形,多边形)的动作的真实感从而提高游戏质量。该引擎通过用户...

    box2d开发说明(cocos2d for iphone)

    ios上box2d的使用方式 cocos2d for iphone

    Box2D_v2.1.2

    Box2D_v2.1.2 Box2D is a 2D physics engine for games. For help with Box2D, please visit http://www.box2d.org. There is a forum there where you may post your questions.

    box2d-as3版 中文教程

    1. 导言 1.1 关于 Box2D 是一个用于游戏的 2D 刚体仿真库。程序员可以在他们的游戏里使用它,它可以使物体的运动 更加可信,让世界看起来更具交互性。...可以使你很好地了解一些基本概念,以便你使用 Box2D。

    box2d中文手册

    box2d是时下最流行的2d物理引擎 也是cocos2dx组件的一部分 本手册言简意赅地说明的了box2d编程的基本方法 是box2d入门的不二之选

    box2d 实例说明

    简单的box2D 环境搭配 世界 -全局-(模拟物理系统) 世界坐标系-上限 下限(同上) 重力加速度 g 是否沉溺 boolean 初始化 世界坐标系(模型物理) 刚体-物理引擎 刚体定义-userData- movieclip的处理 用世界去创建- ...

    box2d 中文手册

    box2d 中文手册 box2d 中文手册

    box2d 2.3.1

    box2d 2.3.1 下载

    Box2D API.chm

    Box2D API.chm Box2D 二维物理引擎

    Box2D+v2.1.0用户手册中文翻译

    Box2D+v2.1.0用户手册中文翻译 as3.0的

    Box2D中文手册

    Box2D中文手册.Box2D是一个用于游戏的2D刚体仿真库。程序员可以使用它, 让游戏中的物体运动起来更真实, 让游戏世界更具交互性。以游戏的角度来看,物理引擎就是一个程序性动画的系统。

Global site tag (gtag.js) - Google Analytics