LibGDX - 翻译相机时屏幕上没有任何变化

LibGDX - Nothing on screen changes when translating camera

我正在使用 GestureListener 尝试创建一个平移菜单,但即使相机的坐标正在更改和更新,也没有任何移动。我认为这可能是因为舞台是相对于相机绘制的,但我不确定我将如何改变它。

我打算怎么做:

camera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
...
gesture = new GestureDetector(this);
        InputMultiplexer im = new InputMultiplexer();
        im.addProcessor(gesture);
        im.addProcessor(stage);

        Gdx.input.setInputProcessor(im);
} //end initialization of CustomizeScreen

public void render(float delta) {
        Gdx.gl.glClearColor(0.2f, 0.2f, 0.2f, 1);
        Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
        stage.act(Math.min(Gdx.graphics.getDeltaTime(), 1 / 60f));  //0, 18, 31 for layer style
        stage.draw();
        Table.drawDebug(stage);

        batch.setProjectionMatrix(camera.combined);

        g.batch.begin();
        g.font.setScale(2);
        g.font.setColor(Color.WHITE);
        g.font.draw(g.batch, "Coins: " + Filer.getCoins(), 15, Gdx.graphics.getHeight() - 15);
        g.font.draw(g.batch, message, 0, 150);
        g.batch.end();

        camera.update();
}
...
    @Override
    public boolean pan(float x, float y, float deltaX, float deltaY) {
        message = "Pan, delta:" + Float.toString(deltaX) +
                "," + Float.toString(deltaY);
        camera.translate(deltaX, 0, 0);
        camera.update();
        return false;
    }

我已经在更新方法中检查了相机坐标 (camera.position.x),所以我知道它实际上正在改变某些东西。但是我所有的按钮都保持不变。它们位于屏幕宽度的三分之一处 (Gdx.graphics.getWidth() / 3)。

我是漏掉了什么,还是做错了什么?根据我在 Google.

上找到的所有内容,我认为我做的是正确的

谢谢:)

Stage class 有不同的构造函数。其中一些构造函数采用 Viewport,其中包含 Camera。如果您使用不带 Viewport 的构造函数,Stage 会创建一个带有新 Camera.
的新 Viewport 在这种情况下,它将使用创建的 Viewport(和 Camera)进行所有绘图,除非您通过调用 setViewport.
切换 Viewport 正如你没有展示的那样,你是如何创建 Stage 我不确定这是否是你的问题所在,但如果这是问题所在,你可以通过使用 Viewport 创建一个 Viewport 来解决它=12=] 并将其传递给 Stage 或通过更改 Viewport (stage.getViewport().setCamera(myCamera)) 的 Camera
希望对你有帮助。