Box2D体速帽?

时间:2013-03-09 03:36:56

标签: c# box2d

我有一个质量为10的物体,程序的每个循环我使用简单的方法对它施加100的力;

Vector2 force = new Vector2(0, 1) * 100;
bod.ApplyForce(force, bod.GetWorldCenter());

它运行良好,加速和所有这一切,但一旦它达到10的速度(100/10我假设)它将不会更快。我无论如何都不是物理学家,但我记得身体应该不断加速,就像在重力作用下一样。这个速度限制是Box2D做事的方式的结果,还是我真的搞砸了什么?另外,我该怎么做才能解决它。

注意:如果我使用ApplyLinearImpulse而不是ApplyForce

,我的速度会相同

更新:我很清楚Box2D施加的最高速度限制(在b2Settings.h中)。在我的例子中,所讨论的项目远远低于此限制,因为更改了施加的力,无论是1000还是10000,总是会达到(力/质量)的最大速度。

1 个答案:

答案 0 :(得分:4)

您正在达到物体的最大允许速度。有两种方法可以解决这个问题:

  1. 调整Box2D设置中的最大允许速度;打开设置并将MaxTranslation float / const更改为更高的值,我假设它的默认值为2.0

  2. 缩小对象大小,执行必要的计算,重新缩放对象。这是技术上正确的做法,正如Box2D对MaxTranslation的评论所述:

  3.   

    身体的最大线速度。该限制非常大,用于防止数值问题。你不应该调整它。

    所以试试#1,如果确实有效,那就意味着你可能需要扩展。希望有所帮助。