我有一个质量为10的物体,程序的每个循环我使用简单的方法对它施加100的力;
Vector2 force = new Vector2(0, 1) * 100;
bod.ApplyForce(force, bod.GetWorldCenter());
Run Code Online (Sandbox Code Playgroud)
它运行良好,加速和所有这一切,但一旦它达到10的速度(100/10我假设)它将不会更快.我无论如何都不是物理学家,但我记得身体应该不断加速,就像在重力作用下一样.这个速度限制是Box2D做事的方式的结果,还是我真的搞砸了什么?另外,我该怎么做才能解决它.
注意:如果我使用ApplyLinearImpulse而不是ApplyForce,我会获得相同的有限速度
更新:我很清楚Box2D施加的总体最高速度限制(在b2Settings.h中).在我的例子中,所讨论的项目远远低于此限制,因为更改了应用的力,无论是1000还是10000,总是会达到最大速度(力/质量).
您正在达到物体的最大允许速度。有两种方法可以解决此问题:
在 Box2D 设置中调整最大允许速度;打开“设置”并将MaxTranslationfloat/const 更改为更高的值,我假设它是默认值2.0。
缩小对象大小,执行必要的计算,然后放大对象。这是技术上正确的方法,正如 Box2D 的注释所示MaxTranslation:
物体的最大线速度。这个限制非常大,用于防止数值问题。你不应该需要调整这个。
所以尝试#1,如果它确实有效,那么这意味着您可能需要扩展。希望有帮助。
| 归档时间: |
|
| 查看次数: |
1898 次 |
| 最近记录: |