libgdx 精灵不同位置上的 box2d

box2d on different positions of the sprites on libgdx

我为 DynamicBody 球和墙壁创建了一个 class,每个 class 都是根据教程进行的并且它们起作用,球落下,但问题是 box2d 使用的几何形状与精灵不在同一个地方,因为我在 google 上搜索的内容与 box2d 的世界没有使用相机或相机视口

还有一点就是我在创造世界的时候用的是这个

world = new World(new Vector2(0, -9.8f), true);

我原以为加重会像在现实世界中一样,但看起来要慢得多。

当创建 box2d 对象时,原点位于中心,因此 2 个宽的对象将在位置集左侧有 1 个单位,右侧有 1 个单位。纹理通常是在该位置的左下角绘制的,因此 2 个单位宽的纹理会将两个单位都放在该位置的右侧。

要解决此问题,您只需将图像向左绘制 1/2 宽度,向底部绘制 1/2 高度。例如

draw(texture, position.x-(width/2),position.y-(height/2));

关于你的第二个问题:box2d 世界使用米和千克进行计算。

因此,如果您以像素 space 为单位提供物理世界数据,例如脉冲矢量 (100px, 100px),世界会将其视为 (100m, 100m)。然后一切都表现得像它是巨大的,从远处看。所以从这个角度来看它似乎很慢。

您需要做的是定义一个转换率(例如 100px = 1m)并在您喜欢的任何地方应用转换以使用 box2d 移动屏幕对象。

编辑:另见:https://github.com/libgdx/libgdx/wiki/box2d#creating-a-world: "In Box2D 1 unit = 1 meter."