2013-07-25 59 views
0

我使用Libgdx繪製2D場景。繪製之前,我這樣做:關於相機的更優雅的方法

batch.setProjectionMatrix(camera.combined); 

正如預期的那樣,(0,0)座標是在屏幕的左下方不再,但現在在屏幕的中間。

什麼會是更好的解決方案,以正確的整個場景的位置:

1)翻譯/位置的照相機據此來證明一切的在屏幕上。

2)記住,(0,0)是在中間有現在,像這樣而繪製的一切:

batch.draw(background, -background.getRegionWidth()/2, -background.getRegionHeight()/2); 

請注意,我實際上做Parallax scrolling和第一個選項處置我的中景如預期的那樣,有點層對象。所以如果沒有解決這個問題的好辦法,那麼我更傾向於第二種選擇。

回答

0

儘量保持你的對象在「世界空間」,並保留從「世界空間」到「相機」中的屏幕的所有翻譯(「相機」只是一個圍繞矩陣的抽象,定義爲將世界空間翻譯成屏幕空間)。使用屏幕信息污染對象的位置會導致混淆和問題。

具體來說,你的情況,只需撥打

camera.translate(width/2, height/2, 0); 

得到(0,0)回到左下角(如果你的「世界空間」完全是在積極的座標空間。

有關更多詳細信息,請查找堆棧溢出以查找類似OpenGL相機的問題:In 3d graphics, what is camera or eye space?