gpt4 book ai didi

c# - Box2D body 速度上限?

转载 作者:可可西里 更新时间:2023-11-01 08:12:22 26 4
gpt4 key购买 nike

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

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

它工作得很好,加速等等,但一旦速度达到 10(我假设是 100/10),它就不会再快了。我无论如何都不是物理学家,但我确实记得 body 应该不断加速,就像在重力作用下一样。这个速度限制是 Box2D 做事方式的结果,还是我真的搞砸了?另外,我该怎么做才能修复它。

注意:如果我使用 ApplyLinearImpulse 而不是 ApplyForce,我会得到相同的有限速度

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

最佳答案

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

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

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

The maximum linear velocity of a body. This limit is very large and is used to prevent numerical problems. You shouldn't need to adjust this.

因此请尝试 #1,如果确实有效,则意味着您可能需要扩展。希望对您有所帮助。

关于c# - Box2D body 速度上限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15306860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com