我正在使用 box2d 进行物理模拟。我正在使用箭头键移动一个圆圈,只要按下一个键就会在身体上施加脉冲。不幸的是,这个圆圈移动得非常缓慢,而且似乎没有像真正的身体那样加速。我的世界尺寸是 400x800 像素。圆体的半径为 20f。
据此,可以通过在创建时缩小圆半径并在绘制过程中获取身体位置后放大来解决该问题。它似乎根本没有任何区别。我在这里缺少一些步骤或设置吗?
我正在使用 box2d 进行物理模拟。我正在使用箭头键移动一个圆圈,只要按下一个键就会在身体上施加脉冲。不幸的是,这个圆圈移动得非常缓慢,而且似乎没有像真正的身体那样加速。我的世界尺寸是 400x800 像素。圆体的半径为 20f。
据此,可以通过在创建时缩小圆半径并在绘制过程中获取身体位置后放大来解决该问题。它似乎根本没有任何区别。我在这里缺少一些步骤或设置吗?
现在我花了很长时间才明白这一点,但实际上Box2D中的速度确实存在硬性限制。见这里:
每个时间步的最大移动限制为 2.0 个单位,在源代码的文件 b2Settings.h 中给出。
如果你在 60FPS 时每帧有一步,那么你的身体可以以 120m/s 的最大速度移动。也许有一天这会为某人节省一点时间。
是的,您使用的尺寸有所不同。Box2d
对浮点数进行操作,因此它的精度是有限的,模拟质量也不同。Box2d
调整为与 size 的动态物体配合使用效果最佳0.1 to 10
。
因此,通常您应该更喜欢将一个单位用于物理,而将另一个单位用于图形
现在回答你的问题。物体的速度受碰撞、摩擦(如果一个物体在另一个物体上滑动)和linear damping
. 所以检查linear damping
你使用什么值(我记得默认情况下它是非零的)。据我所知,没有速度限制,但如果使用相同的时间步,更高的速度将提供更少质量的碰撞。