我在游戏中使用了 Aurélien Ribon 的 LibGDX Project Setup。它通过以下方式创建相机:
public void create() {
float w = Gdx.graphics.getWidth();
float h = Gdx.graphics.getHeight();
camera = new OrthographicCamera(1, h/w);
我喜欢它,它使精灵的定位更容易,因为我的水平轴范围从 -0.5 到 0.5,垂直轴范围从 -0.5*screenHeight 到 0.5*screenHeight。
但是,我相信它会导致 Box2d 出现一些问题。我正在尝试创建一个弹跳球,我执行以下操作:
BodyDef bodyDef = new BodyDef();
bodyDef.type = BodyType.DynamicBody;
bodyDef.position.set(0, 0); //center of screen
ballBody = world.createBody(bodyDef);
dynamicCircle = new CircleShape();
dynamicCircle.setRadius(0.02f); // really small body size
ballFixture = new FixtureDef();
ballFixture.shape = dynamicCircle;
ballFixture.density = 0.5f;
ballFixture.restitution = 0.9f;
ballBody.createFixture(ballFixture);
屏幕底部附近还有地面静止体。问题是,那个球反弹了几次,然后在最后(当反弹应该非常低且频繁时)它只是着陆并且没有移动。
我相信这与我的世界单位(水平轴上的 1 个单位)有关。如何保持当前的世界设置并获得正确的 Box2d 物理?