Box2D体速度上限

本文关键字:速度 Box2D | 更新日期: 2023-09-27 18:02:58

我有一个质量为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,都会达到(力/质量)的最大速度。

Box2D体速度上限

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

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

  2. 按比例缩小对象大小,执行必要的计算,然后按比例恢复对象。这是技术上正确的做法,作为Box2D的评论MaxTranslation注:

物体的最大线速度。这个限制是非常大的,用来防止数值问题。你不需要调整这个

所以尝试#1,如果这确实有效,那么这意味着你可能需要缩放。