说明:
box2d系列学习心得系基于网上传播的相应的文章撰写的,个人添加的部分文字已添加下划线,其余部分均系转载或摘抄:
1、来源一:Box2D v2.1.0用户手册中文翻译
2、来源二:complex_ok的专栏
box2d核心概念应用到游戏之初步理解:
1、 利用world模拟创建游戏的物理世界;
2、 利用body创建各种通用物体;
3、 利用fixtures给予通用物体基本属性(密度、摩擦力)以仿真各种真实物体;
4、 利用joint将两个或多个物体(body)关联到一起,创建组合一起运动的物体,如旋转机器人,类似使用组合多个图片实现动画效果的物体。
5、 当游戏中各种物体状态发生改变,导致出现碰撞时,contact及contact constraint 就出现了,contact用来表示两个物体之间出现了碰撞,contactconstraint用于限制碰撞的影响范围。
6、 通常游戏需要对物体的碰撞进行处理,以实现游戏效果,此时需要利用ContactListener相应的接口消除部分物体的碰撞、记录发生碰撞的物体状态以立即实现游戏效果。
以下部分系摘录于网上传播的相应的文章
1.5 核心概念(CoreConcepts)
Box2D中有一些基本对象, 这里我们先做一个简要的定义, 随后的文档会有更详细的描述。
形状(shape)
2D几何对象, 比如圆形(circle)或多边形(polygon)。
刚体(rigid body)
十分坚硬的物质, 坚硬得像钻石,它上面任意两点之间的距离都保持不变。在后面的讨论中,我们用物体(body)来代替刚体。
夹具(fixture)
fixture将形状绑定到物体之上, 并有一定的材质属性, 比如密度(density), 摩擦(friction)和恢复(restitution)。
(译注:一个物体和另一物体碰撞, 碰撞后速度和碰撞前速度的比值会保持不变,这比值就叫恢复系数。)
约束(constraint)
约束是个物理连接, 用于消除物体的*度。在2D中, 物体有3个*度(水平,垂直,旋转)。如果我们把一个物体钉在墙上(像钟摆那样), 那就把它约束到了墙上。这个时候,此物体就只能绕着钉子旋转, 所以这个约束消除了它2个*度。
(译注:简单的说, 需要用几个参数来确定物体的空间状态, 这个物体就有几个*度。在二维中,完全没有约束的条件下, 我们要确定物体的状态, 要有x坐标, y坐标, 旋转角这三个参数, 所以*度为3。如果物体被钉在墙上, 只要有旋转角,就可以完全确定物体的状态,有了钉子这个约束,物体*度就变成了1。)
接触约束(contact constraint)
一种特殊的约束, 设计的目的是为了防止刚体被穿透, 也用于模拟摩擦和恢复。接触约束不用你来创建, 它们会自动被Box2D生成。
关节(joint)
关节就是种约束, 用于将两个或多个body固定到一起。Box2D支持不同的关节类型:转动(revolute),棱柱(prismatic),距离(distance)等。一些关节可以有限制(limits)和马达(motors)。
关节限制(joint limit)
关节限制限定了一个关节的运动范围。例如人类的胳膊肘只能在某一角度范围内运动。
关节马达(joint motor)
根据关节的*度, 关节马达可以驱动关节所连接的物体。例如, 你可以使用一个马达来驱动一个肘的旋转。
世界(world)
一个物理世界就是各种, 刚体(bodies), 夹具(fixtures), 约束(constraints)相互作用的集合。 Box2D支持创建多个世界, 但这通常没有必要。