2012-12-11 41 views
0

我遇到了libGDX中Camera類的問題,即使它的位置發生變化,我也無法直觀地移動它。無法移動libgdx OrthographicCamera

這是我如何設置攝像機:

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

您必須將組合投影矩陣應用到您希望影響的每個批處理/渲染器上。

但除此之外,它似乎很好。嘗試逐步調試它。 設置一個簡單的項目只有new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());和一些行(ShapeRenderer)或精靈(SpriteBatch),將投影矩陣設置爲camera.combined,將camera.positionupdate()更改爲攝像機。這應該做到這一點。

然後,當您更改camera.position時,所有具有相機平截頭體的渲染器都應相應地偏移而不更改精靈/幾何體的偏移量。

btw。視口不是0 - 800,而是x和-400 - 400分別用於x和y;

+0

我有一個類似的問題:當我'camera.position.set(x,y,0)',它渲染了一幀的錯誤區域。你的答案幫了很大忙。 – gvlasov