1

不确定这是否与惯性有关,或者是否是我的代码,但我已经将代码简化了很多,但我找不到它。

场景:我有一个身体,质量为 10(我假设公斤)。我使用 ApplyLinearImpulse 并使用像 (1,0) 这样的向量和像 5 这样的常量将对象向右移动。

问题:它确实向右移动,但似乎被限制了。当我增加馈送到 ApplyLinearImpulse 的值时,LinearVelocity 属性确实会上升,但 Position 的实际变化不会。一旦我调用 world.step(msDelta),LinearVelocity 就会回落到某个微小的值。

我做错了吗,或者是否有基于我的质量的内部上限?

4

1 回答 1

2

每个时间步的最大移动限制为 2.0 个单位,在 Box2D 源代码的文件 b2Settings.h 中设置。如果需要,您可以更改此值 (b2_maxTranslation),只需注意此文件中的值已调整为可以很好地协同工作,因此如果更改太多可能会出现其他问题。

请注意,这是一个在整个 Box2D 中使用的#define 常量,因此您需要重新编译库本身以使更改完全生效。我对 Farseer 的了解还不够,无法告诉您这是否容易:)

通常,如果您觉得需要更改此值,您可能希望首先考虑缩小所有物理尺寸,这样您的身体每个时间步长的移动速度就不会超过 2 个物理单位。

您可能对这里的一些其他常见“陷阱”感兴趣:http ://www.iforce2d.net/b2dtut/gotchas

于 2012-08-28T18:43:15.727 回答