较小的惯性或速度上限

时间:2012-08-28 01:55:26

标签: c# box2d farseer

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

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

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

我做错了,还是基于我的质量有内部上限?

1 个答案:

答案 0 :(得分:2)

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

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

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

您可能会对此处的其他常见“陷阱”感兴趣:http://www.iforce2d.net/b2dtut/gotchas