形状、刚体、定制器、连接器以及世界在我看来是Box2d中最重要的五个概念。Erin Catto在他的手册中对这几个概念的定义字字珠玑,因此我决定在下面直接引用他的原话:
塑造
一个二维几何对象,如圆或多边形。刚体
一大块物质,是如此强烈,无论任何两个位块之间的距离是恒定的。他们是硬像一个的钻石。在下面的讨论中中,我们使用的的身体,互换与刚体。夹具
夹具形状结合身体,并增加了材料的性能,如密度,摩擦和归还。联合
这是用于两个或两个以上的机构共同举行的约束。Box2D支持联合几个类型:旋转,棱柱,距离,和更多。有些关节可能有很大的局限性和电机。世界
物理世界是一个互动起来的机构,夹具和约束的集合。Box2D支持创建多个世界,但是这通常是没有必要的或可取的。
它很容易理解正确吗?尽管这些概念之间的关系可能会非常棘手。因此,我做了下面的图表来说明如何在Box2D的世界定义一个盒子。请在仔细看看,我会进一步解释,在我的下一篇文章。
----------------------------------------
题外话:我在考虑fixture应该怎么翻译成中文的时候居然在百度文库里搜出了一篇Box2d C++版手册的全文翻译,可是仔细一看却发现那份翻译材料中竟只字未提fixture,原来那个老版本中fixture的功能都放在了shape里面,足见不同版本不同语言下的Box2d还是不尽相同的。最后我决定将fixture翻译为“定制器”,它主要掌管形状,密度、摩擦系数还有恢复系数等等。
形状
一个2D的几何图形,比方说圆形或者多边形。
在下文的讨论中我们直接称它物体。定制器
定制器用于将一个特定的形状赋予物体同时它也用于定义物体的性质,比如:密度、摩擦系数还有恢复系数。连接器
连接器提供用于固定两个或更多物体的约束的Box2D支持多种连接器:旋转,平移,距离等等其中一些连接器可以设定限制相关的例句马达。世界
一个物理世界就是一个各物体,定制器以及约束之间互动的集合。Box2D的支持多个世界的建立,但一般情况下这既没必要也不适宜。
我想这几个概念应该都不难理解。不过这些概念之间的关系估计对于刚接触Box2d的朋友则没有那么容易理清。因此我画了下面这个简单的图表,它大概阐释了一个最基本的盒子是如何被定义在Box2d的物理世界中的。请狠狠看它几眼,我会在下文继续详细地介绍它。