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,并且在第二个示例中使用较小的视口,正方形将更快地移出屏幕。
我有以下设置:
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,并且在第二个示例中使用较小的视口,正方形将更快地移出屏幕。