Camera LibGDX相机位置随移动而移动

Camera LibGDX相机位置随移动而移动,camera,libgdx,box2d,perspectivecamera,Camera,Libgdx,Box2d,Perspectivecamera,我正在用LibGDX和Box2D编程一个游戏,我想让我的相机跟随我的玩家。但当我放大时(因为Box2Ds公制,使用camera.zoom=x),当播放器移动时,相机会移动(相机跟随播放器): 转变观点 正常视图 这只会在玩家移动时发生,所以坐标不会有问题。我的问题是如何在玩家移动时消除这种移动 以下是我的一些代码: 渲染循环(节选): 让玩家移动: 我唯一的想法是把相机更新方法放在世界步之后。试试吧,谢谢你的比喻,很好用。我现在使用world.step(),然后是cam.position.s

我正在用LibGDX和Box2D编程一个游戏,我想让我的相机跟随我的玩家。但当我放大时(因为Box2Ds公制,使用camera.zoom=x),当播放器移动时,相机会移动(相机跟随播放器):

转变观点

正常视图

这只会在玩家移动时发生,所以坐标不会有问题。我的问题是如何在玩家移动时消除这种移动

以下是我的一些代码:

渲染循环(节选):

让玩家移动:


我唯一的想法是把相机更新方法放在世界步之后。试试吧,谢谢你的比喻,很好用。我现在使用world.step(),然后是cam.position.set,最后是cam.update(),现在不再需要移动相机了。
@Override
public void render(float delta) {
    //set the camera position to player's position
    cam.position.set(player_body.getWorldCenter().x, player_body.getWorldCenter().y, 0);
    cam.update();

    world.step(Gdx.graphics.getDeltaTime(), 6, 2);
    world.clearForces();

    handleInput();

    Gdx.gl.glClearColor(.05f, .05f, .05f, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

    batch.setProjectionMatrix(cam.combined);

    debugRenderer.render(world, cam.combined);

}
if (Gdx.input.isKeyPressed(Keys.W)) {
    player_body.setLinearVelocity(transX, transY);
    player.setMoving(true);
}