最近我從使用整數的array
作爲Java中的屏幕切換到使用庫。我正在使用的庫是LibGDX
,對我而言轉換是完全不同的。我已經開始掌握大部分東西了,而且我仍然自己寫了一些代碼。Java&LibGDX:限制Sprite的渲染範圍
在這一點上,我很好奇,如果我可以限制Sprite
s的繪製範圍和任何其他繪圖因素,比如如果一個精靈在盒子中間卡住,它不會渲染零件這是伸出(如這樣:)
有沒有辦法在一個特定的範圍來呈現,如果是部分超出範圍,它不會呈現什麼是超出範圍,或者我必須自己做那件事?
最近我從使用整數的array
作爲Java中的屏幕切換到使用庫。我正在使用的庫是LibGDX
,對我而言轉換是完全不同的。我已經開始掌握大部分東西了,而且我仍然自己寫了一些代碼。Java&LibGDX:限制Sprite的渲染範圍
在這一點上,我很好奇,如果我可以限制Sprite
s的繪製範圍和任何其他繪圖因素,比如如果一個精靈在盒子中間卡住,它不會渲染零件這是伸出(如這樣:)
有沒有辦法在一個特定的範圍來呈現,如果是部分超出範圍,它不會呈現什麼是超出範圍,或者我必須自己做那件事?
您可以使用LibGDX ScissorStack對矩形進行簡單「剪裁」。
因爲OpenGL是有狀態的,許多LibGDX繪圖API緩存,請務必在剪刀範圍內「刷新」或「結束」您的批處理。請參閱libgdx ScissorStack not working as expected和libgdx Cutting an image
如果我沒有誤解您,您正在尋找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
中抽出東西,因爲它們永遠不會出現在屏幕上,但是平局會帶來一些性能。