box2d body 根据世界 width/height 单位移动不同

box2d body moves differently according to world width/height units

我有以下设置:

private static final float SCENE_WIDTH = 1280; 
private static final float SCENE_HEIGHT =720;

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

camera = new OrthographicCamera();
viewport = new FitViewport(SCENE_WIDTH, SCENE_HEIGHT, camera);
//viewport.apply();
camera.position.set(SCENE_WIDTH * 0.5f, SCENE_HEIGHT * 0.5f, 0);

然后我创建一个具有以下功能的 body:

//Center the body so it can start falling down
defaultDynamicBodyDef.position.x = SCENE_WIDTH * 0.5f;
defaultDynamicBodyDef.position.y = SCENE_HEIGHT * 0.5f;

// Shape for square
square = new PolygonShape();
// IMPORTANT 100 = 1m
square.setAsBox(100, 100);

// Fixture definition for our shapes
boxFixtureDef = new FixtureDef();
boxFixtureDef.shape = square;
boxFixtureDef.density = 0.8f;
boxFixtureDef.friction = 0.8f;
boxFixtureDef.restitution = 0.15f;

见上文IMPORTANT。使用这些设置,当 1m = 100 缩放正方形时,正方形会慢慢下降。

但是如果我的设置是这样的:

private static final float SCENE_WIDTH = 12.8f; 
private static final float SCENE_HEIGHT =7.2f;

然后将正方形大小更改为:

// Shape for square
square = new PolygonShape();
// IMPORTANT 1m = 1
square.setAsBox(1f, 1f);

方块倒得快多了?我很迷惑。综上所述,世界单位为 1280 和 720,平方参数为 100 和 100,body 比世界单位 12.8 和 7.2 以及平方的 1 & 1 下降得慢。在这两种情况下,我都使用世界单位,但下降速度不同?这是为什么?

因为两个例子中的重力是一样的。因此,正方形将以相同的速度移动 speed/acceleration,并且在第二个示例中使用较小的视口,正方形将更快地移出屏幕。