当我将libGDX摄像机的位置设置为玩家x和y时,为什么我的播放器会移出屏幕?

时间:2014-11-28 21:56:22

标签: java camera libgdx game-physics

过去几天我一直在修补用一台摄像机移动播放器并让摄像机跟随播放器的x和y。当我搜索到这一切时,我找到的就是移动播放器并将相机的x和y设置为该值。但我遇到了问题,我的播放器不会停留在屏幕中间,这真的很烦人。如果有人能说我会那么棒。这是代码。

在创作中;

    cam = new OrthographicCamera();
    cam.setToOrtho(false, Main.WIDTH, Main.HEIGHT);

    batch = new SpriteBatch();
    batch.setProjectionMatrix(cam.combined);

在更新中;

    cam.position.set(Player.getX() + Main.WIDTH / 2, Player.getY() + Main.HEIGHT / 2, 0);
    cam.update();

在运动中;

    if (Gdx.input.isKeyPressed(Keys.W) || Gdx.input.isKeyPressed(Keys.UP)) {

        Player.setVelY(Player.SPEED);

    } else if (Gdx.input.isKeyPressed(Keys.S)
            || Gdx.input.isKeyPressed(Keys.DOWN)) {

        Player.setVelY(-Player.SPEED);

    } else {

        Player.setVelY(0);

    }

    if (Gdx.input.isKeyPressed(Keys.A) || Gdx.input.isKeyPressed(Keys.LEFT)) {

        Player.setVelX(-Player.SPEED);
        Player.dir = Player.Direction.LEFT;

    } else if (Gdx.input.isKeyPressed(Keys.D)
            || Gdx.input.isKeyPressed(Keys.RIGHT)) {

        Player.setVelX(Player.SPEED);
        Player.dir = Player.Direction.RIGHT;

    } else {

        Player.setVelX(0);
        Player.dir = null;

    }

1 个答案:

答案 0 :(得分:0)

我建议您将相机位置设置为播放器Sprite的位置。我不知道你的Player.getX()返回了什么,但它应该返回表示玩家的Sprite的x坐标。 y坐标也是如此。

cam.position.set(Player.getX() + Main.WIDTH / 2, Player.getY() + Main.HEIGHT / 2, 0);

将是

cam.position.set(Player.getX() + Player.getWidth() / 2, Player.getY() + Player.getHeight() / 2, 0);