如何使Box2D中的动态体仅在不使用关节的情况下水平移动?

时间:2013-06-23 06:32:18

标签: box2d

我的游戏中有一个动态的身体(这是2D侧面平台游戏)我想让它沿着平台来回移动,但不会影响我的任何垂直力。

我无法将其作为运动体,因为我需要使用它进行碰撞检测,而box2d不支持运动物体的碰撞检测。

我也不能做一个棱柱关节,因为没有第二个身体将关节连接到。

因此,在这种情况下,如何使动态物体严格水平移动而不使其成为运动物体并且不使用关节?

1 个答案:

答案 0 :(得分:2)

如果你提供一些关于你确切需要的信息,那会更好。根据你的描述,我可以建议下一个解决方案:

1)>>我也不能制作一个棱柱形关节,因为没有第二个身体将关节连接到。

您可以在没有灯具的情况下创建某个静态物体,并附加到它上面。注意,这个身体可以放在场景的任何地方(例如,在位置(0,0))。

2)将b2BodyDef :: gravityScale设置为零并随意移动(力,冲动,b2MouseJoint,SetTrasform)。

3)使用b2MouseJoint以任何方式移动身体。关节也可以附着在现场的任何静态身体上。在那里设置身体的fixedRotation可能是有用的,以防止旋转。

4)>>我无法使它成为运动体,因为我需要使用它进行碰撞检测,而box2d不支持运动物体的碰撞检测。

可以肯定的是,Box2d支持运动物体的碰撞检测,但它只能与动态物体碰撞运动物体。如果您需要捕捉运动物体与静电或其他运动物体之间的碰撞,您可以通过b2WeldJoint将一些动态物体附着在这个运动体上,并听取这个动态体的接触。