0

我遇到了 libGDX 中的 Camera 类的问题,即使它的位置发生变化,我也无法在视觉上移动它。

这就是我设置相机的方式:

camera = new OrthographicCamera(frustumWidth, frustumHeight);

这就是我改变其位置的方式:

world.onUpdate(deltaTime, camera);
    renderer.render(world);
    camera.position.set(MathUtils.random(0, 800), MathUtils.random(0, 480), 0);
    //camera.position.set(
        //  world.dynamicObjects.get(GameWorld.MainPgID).pos.x * GameWorld.frustumToWorldRatio,
            //world.dynamicObjects.get(GameWorld.MainPgID).pos.y * GameWorld.frustumToWorldRatio, 0);

我在 .render 函数的开头提交了更改:

camera.update();
        batcher.setProjectionMatrix(camera.combined);
        batcher.begin();
        polygonBatcher.begin();

正如我所说的那样,位置确实发生了变化,但在我尝试过的许多组合中,都没有奏效。也许我误解了相机的工作原理,我需要移动物体而不是相机?对我来说似乎很愚蠢,毕竟它被称为相机是有原因的。

4

1 回答 1

1

您必须在希望它影响的每个批次/渲染器上应用组合投影矩阵。

但除此之外,它似乎还不错。尝试逐步调试它。设置一个只有new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());一些线条(ShapeRenderer)或精灵(SpriteBatch)的简单项目,将投影矩阵设置为camera.combined,更改camera.positionupdate()相机。那应该这样做。

然后,当您camera.position使用相机的平截头体更改所有渲染器时,应该相应地偏移而不改变精灵/几何的偏移量。

顺便提一句。视口不是 0 - 800,而是 x 和 y 分别为 -400 - 400;

于 2013-01-12T19:54:02.323 回答