C++ box2d中对象之间的间隙

C++ box2d中对象之间的间隙,c++,box2d,C++,Box2d,我的box2D有问题。正如您在下面的屏幕截图中所看到的,所有对象之间都有间隙。(绘制的所有对象都是box2d对象)。我真的很想解决这个问题,但我不知道该怎么办。我尝试过处理Meters2像素和Pixels2米常数: static constexpr float M2P=10; // meters to pixels static constexpr float P2M=1/M2P; // 当M2P为10时,它可以正常工作,但问题是1米在屏幕上太小了。我想将它设置为60,理想情况下,这是它在下面

我的box2D有问题。正如您在下面的屏幕截图中所看到的,所有对象之间都有间隙。(绘制的所有对象都是box2d对象)。我真的很想解决这个问题,但我不知道该怎么办。我尝试过处理Meters2像素和Pixels2米常数:

static constexpr float M2P=10; // meters to pixels
static constexpr float P2M=1/M2P; //
当M2P为10时,它可以正常工作,但问题是1米在屏幕上太小了。我想将它设置为60,理想情况下,这是它在下面的屏幕截图


有人知道如何解决这个问题吗?

如果没有看到完整的代码并能够自己编译,就很难准确地找出导致问题的原因;然而,我认为朝着正确方向迈出的一步是从Box2dGitHub中检查代码。它提供了一个清晰的示例,看起来与您尝试执行的操作类似。如果您发布您的代码,我将能够为您提供更多帮助。

“当对象的大小与典型现实世界对象的大小相同时,Box2D通常效果最好。例如,一个桶大约有1米高。由于浮点运算的限制,使用Box2D来模拟冰川或尘埃粒子的运动不是一个好主意。”


很可能你已经到了精度的极限,并且得到了舍入误差。每像素60米意味着你上面的正方形物体,占据了大约20个像素,世界尺寸超过1公里

浮动?我怀疑屏幕宽度(和高度)是一个固定的整数像素数。因此,计算对象显示位置的算法(选择不当)可能会解释这些间隙。一米的像素数决定一米框在屏幕上的大小。问题是,如果我想要一个大的米,会有空隙,所以如果我设置一个小的米,那么,它不仅是小的,而且会永远下降,而且下降速度很慢。我一定是做错了什么。抱歉,我只是想大声说出来,有时调试图形问题很困难。请提供更多与所示图片相关的代码。同时,我猜这些间隙是由于Box2D使用的“皮肤”造成的,而你看到它们是因为你的正方形相对于皮肤的大小太小。有关此“皮肤”的更多详细信息,请参阅。