无法移动libgdx OrthographicCamera

时间:2012-12-11 18:03:42

标签: java android opengl-es libgdx

我在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();

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

1 个答案:

答案 0 :(得分:1)

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

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

然后当您更改camera.position时,所有具有相机截头锥的渲染器都应相应地偏移,而不会更改精灵/几何体的偏移。

顺便说一句。视口不是0 - 800,而是x的-400 - 400和y;