首页 理论教育 Box2D游戏引擎核心概念及功能介绍

Box2D游戏引擎核心概念及功能介绍

时间:2023-10-22 理论教育 版权反馈
【摘要】:在2D世界中,物体有水平、垂直、旋转3个自由度。接触约束不需要创建,它们会自动被Box2D生成。Box2D支持不同的关节类型例如转动、棱柱和距离等。Box2D支持创建多个世界,但是这通常没有必要。Box2D的内存是自己管理的,自己建立了一个内存池,以减少对内存的频繁的申请和释放。所以所有对象都要Box2D创建,也就是libgdx中的World。摩擦在Box2D中会被精确地模拟,摩擦力的强度与正交力成正比。当计算两个形状之间的摩擦时,Box2D必须联合两个形状的摩擦参数。

Box2D游戏引擎核心概念及功能介绍

(1)形状(shape)

通常表示2D几何对象,例如圆形(Circle)或多边形(Polygon)。

(2)刚体(Rigid Body)

表示十分坚硬的物质,坚硬得像钻石,它上面任意两点之间的距离都保持不变。在后面的讨论中,我们用物体(Body)来代替刚体。

(3)夹具(Fixture)

夹具Fixture表示将形状绑定到物体之上,并有一定的材质属性,比如密度(Density)、摩擦(Friction)和恢复(Restitution)。如果一个物体和另一物体碰撞,碰撞后速度和碰撞前速度的比值会保持不变,这个比值就是恢复系数

(4)约束(Constraint)

约束是一个物理连接,用于消除物体的自由度。在2D世界中,物体有水平、垂直、旋转3个自由度。如果我们把一个物体钉在墙上(例如钟摆),那就把它约束到了墙上,这时此物体就只能绕着钉子旋转,所以这个约束消除了它的2个自由度。

(5)接触约束(Contact Constraint)

一种特殊的约束,设计的目的是为了防止刚体被穿透,也用于模拟摩擦和恢复。接触约束不需要创建,它们会自动被Box2D生成。

(6)关节(Joint)

关节就是一种约束,用于将两个或多个Body固定到一起。Box2D支持不同的关节类型例如转动(Revolute)、棱柱(Prismatic)和距离(Distance)等。一些关节可以有限制(Limits)和马达(Motors)。(www.xing528.com)

■ 关节限制(Joint Limit)

关节限制限定了一个关节的运动范围,例如人类的胳膊肘只能在某一角度范围内运动。

■ 关节马达(Joint Motor)

根据关节的自由度,关节马达可以驱动关节所连接的物体。例如可以使用一个马达来驱动一个肘的旋转。

(7)世界(World)

一个物理世界就是各种刚体(Bodies)、夹具(Fixtures)、约束(Constraints)相互作用的集合。Box2D支持创建多个世界,但是这通常没有必要。

Box2D的内存是自己管理的,自己建立了一个内存池,以减少对内存的频繁的申请和释放。所以所有对象都要Box2D创建,也就是libgdx中的World。

(8)摩擦(Friction)

摩擦可以使对象逼真地沿其他对象滑动。Box2D支持静摩擦和动摩擦,两者都使用相同的参数。摩擦在Box2D中会被精确地模拟,摩擦力的强度与正交力(称之为库仑摩擦)成正比。摩擦参数经常会设置在0到1之间,也可以是其他的非负数,0意味没有摩擦,1表示会产生强摩擦。当计算两个形状之间的摩擦时,Box2D必须联合两个形状的摩擦参数。

(9)恢复(Restitution)

恢复可以使对象弹起,恢复的值通常设置在0到1之间。想象一个小球掉落到桌子上,值为0表示着小球不会弹起,这称为非弹性碰撞。值为1表示小球的速度跟原来一样,只是方向相反,这称为完全弹性碰撞

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈