我的GameStage课程中有一个摄像头,当按下左或右箭头键时我正试图翻译相机。当我按下任一键并打印相机x位置时,它会改变,但没有任何动作(屏幕上的演员保持在同一位置)。我做错了什么?
屏幕渲染方法:
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();
}
谢谢:)
答案 0 :(得分:2)
从您可见的代码我会说问题是你有两个camera
。
一个是在调用super
构造函数时创建的。一个人手动创建。即使您要翻译自己创建的camera
,渲染batch
也会使用stage
s camera
。
删除您创建的camera
,仅使用stage
s camera
。