我的 GameStage 类中有一个摄像头,我试图在按下左箭头键或右箭头键时平移摄像头。当我按下任一键并打印相机 x 位置时,它会发生变化,但没有任何移动(屏幕上的 Actor 保持在同一位置)。我做错了什么?
屏幕渲染方法:
public void render(float delta) {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
Gdx.gl.glClearColor(255, 255, 255, 255);
gameStage.update();
gameStage.draw();
gameStage.act(delta);
}
涉及相机的阶段代码:
public GameStage() {
super(new ScalingViewport(Scaling.stretch, Lib.WIDTH, Lib.HEIGHT, new OrthographicCamera(Lib.WIDTH, Lib.HEIGHT)));
initCamera();
Gdx.input.setInputProcessor(this);
}
public void initCamera() {
camera = new OrthographicCamera(Lib.WIDTH, Lib.HEIGHT);
camera.position.set(camera.viewportWidth / 2, camera.viewportHeight / 2, 0f);
camera.update();
}
public void updateCamera() {
if (Gdx.input.isKeyPressed(Input.Keys.LEFT)) {
camera.translate(-5, 0);
} else if (Gdx.input.isKeyPressed(Input.Keys.RIGHT)) {
camera.translate(5, 0);
}
camera.update();
}
public void update() {
updateCamera();
}
谢谢:)
最佳答案
根据您可见的代码,我会说问题是您有两个相机
。
一个是在调用 super
构造函数时创建的。还有一个是手动创建的。即使您正在翻译您创建的 camera
,渲染 batch
也会使用 stage
的 camera
。
删除您创建的camera
,只使用stage
的camera
。
关于java - libGDX 相机不翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41178191/