2013-03-01 184 views
1

我試圖正確配置我的CameraSprite s在libGDX中,以便在左下角的原點正確顯示在2D座標系中。libGDX座標系

設置我Camera這樣的:

cameraWidth = Gdx.graphics.getWidth(); 
cameraHeight = Gdx.graphics.getHeight(); 
camera = new OrthographicCamera(1, cameraHeight/cameraWidth); 

我建立了我的Sprite就像這樣:

sprite.setOrigin(sprite.getWidth()/2, sprite.getHeight()/2); 
sprite.setScale(scale); 
sprite.setPosition(startX,startY); 

我的問題是sprite.setSize(x,y)。如果我將所有精靈的尺寸設置爲(1, texture aspect ratio),那麼所有東西都以正確的顯示比例(不是被擠壓或拉伸)繪製,但沒有繪製在正確的位置。例如,如果我在(0,0)處畫一些東西,它將在屏幕左下方畫出左下角並增加許多像素。即,如果我將它設置爲(1, display aspect ratio)事情看起來非常接近在正確的地方畫 - -

我周圍的比我能得到的東西在不同的地方畫改變注意到他們只是從他們中間拉,而不是他們左下角,如LibGDX指定。唯一的問題是,圖像都顯得像是被拉或拉了,這是不好的。

這似乎是一個簡單的問題,我只是想知道如何設置這個,所以我可以有一個合理的座標系統,以正確的位置和正確的高寬比來繪製事物。謝謝。

回答

0

我已經找到了解決這個問題:

將相機設定爲鄰

camera.setToOrtho(false,1,screen height/screen width); 

而且,每個精靈必須有它的位置設置爲(x - sprite.getWidth()/2, y - sprite.getHeight()/2(即使它已經正視相機) 。我擴展了Sprite類並覆蓋了方法來解決這個問題。現在,每次設置好職位後,Sprite最終會走到你「認爲他們會去的地方」,其中setPosition(0,0)放在左下角,setPosition(1,height/width)放在左上角。

奇怪的是,由此得出每子畫面周圍的(X,Y)點爲中心,這將是有意義,因爲寬度/ 2和高度/ 2從該位置減去,除了減去值不會使通過左下角將精靈居中 - 它以我沒有想到的方式爲中心。

2

一旦您更改視口以匹配屏幕的寬高比,那麼除非屏幕爲正方形,否則(0,0)將不再位於屏幕的左下角。如果屏幕寬度比高度大,那麼x軸的可見部分仍將從0.0增加到1.0,但y軸上的0.0將現在離屏幕底部不遠。

如果調整相機,使(0,0)是在屏幕的左下方,並記住,可見Y軸只會上升到grapicsHeight/graphicsWidth那麼就應該解決您的協調問題。

我建議將相機設置爲指向屏幕中間而不是左下角。有一個例子here完全是這樣的,無論你調整它的大小,繪製一個總是在屏幕中心的2:1矩形,總是以2:1的比例。

+0

謝謝,雖然我一直在處理你已經說過的話,但沒有奏效。 – GraphicsMuncher 2013-03-02 00:26:43