我在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();
正如我所说的那样,这个位置确实发生了变化,而且我尝试过的很多组合都没有效果。 也许我误解了相机是如何工作的,我需要移动物体而不是相机?对我来说似乎是愚蠢的,毕竟它被称为相机是有原因的。
答案 0 :(得分:1)
您必须在希望它影响的每个批处理/渲染器上应用组合投影矩阵。
但除此之外似乎还不错。尝试逐步调试它。
设置仅包含new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
和一些线(ShapeRenderer)或精灵(SpriteBatch)的简单项目,将投影矩阵设置为camera.combined
,更改camera.position
和update()
相机。应该这样做。
然后当您更改camera.position
时,所有具有相机截头锥的渲染器都应相应地偏移,而不会更改精灵/几何体的偏移。
顺便说一句。视口不是0 - 800,而是x的-400 - 400和y;