2014-09-30 47 views
3

最近我從使用整數的array作爲Java中的屏幕切換到使用庫。我正在使用的庫是LibGDX,對我而言轉換是完全不同的。我已經開始掌握大部分東西了,而且我仍然自己寫了一些代碼。Java&LibGDX:限制Sprite的渲染範圍

在這一點上,我很好奇,如果我可以限制Sprite s的繪製範圍和任何其他繪圖因素,比如如果一個精靈在盒子中間卡住,它不會渲染零件這是伸出(如這樣:)

Example of Rendering in a Range
有沒有辦法在一個特定的範圍來呈現,如果是部分超出範圍,它不會呈現什麼是超出範圍,或者我必須自己做那件事?

回答

0

如果我沒有誤解您,您正在尋找camera
camera可以讓你定義一個Viewport(大小),你只能看到這個Viewport裏面的東西。
您也可以移動它以查看世界的其他部分。

例如:

OrthographicCamera cam = new OrthographicCamera(80, 45); 

這定義了camera,其showes你80個單位在x和45個單位在y中。默認情況下,P(0/0)位於屏幕中間,因此此camera顯示的對象範圍爲x從-40至+40,y爲-22.5至+22.5。
您可以移動,使P(0/0)是在左下角:

camera.position.x = -40; 
camera.position.y = -22.5; 
camera.update(); 

這應該由22.5臺攝像機向左移動了40臺升降,從而使P(0/0)是左下角。不要忘記撥打update(),因爲這將重新計算投影和視圖矩陣。

最後,這個camera畫畫,你需要將SptieBatch小號projectionMatrix設置爲camera的一個:

spriteBatch.setProjectionMatrix(camera.combined); 

現在你可以使用這個SpriteBatch繪製。
你也應該考慮se ViewFrustum-Culling,這意味着你不會從camera中抽出東西,因爲它們永遠不會出現在屏幕上,但是平局會帶來一些性能。