2016-06-09 83 views
0

我目前正在研究LibGDX手機遊戲應用程序。我遇到的問題是,我希望世界的寬度和高度爲480x480,屏幕寬度和高度爲640x480。屏幕上額外的240個單位將用於渲染UI,有點像ROTMG或Clash Royale(遊戲中的卡片視圖)。渲染遊戲世界小於屏幕寬度和高度

我曾考慮過用另一臺相機渲染遊戲的UI,但這不是我想要的設計風格。我希望遊戲的邏輯和座標處於世界的寬度和高度範圍內,而不是佔用UI的額外空間。

我該怎麼做?

P.S.遊戲是2d

P.P.S.我想讓遊戲保持這個配置的大小。

回答

1

Denfeet,創建一個帶2組實例的全屏舞臺 - 其中一個用於UI,另一個用於遊戲。組:遊戲界限爲0,0,480,480。界面的界限爲480,0,240,480。現在,如果你想在相對於遊戲組的座標系中工作,例如,調用Group.localToStageCoordinates(Vector2 localCoords)遊戲組(或者讓自己成爲一個輔助方法,這樣你就不必一直寫這個長名字)。此外,用戶界面和遊戲邏輯可以保持完全分開 - 魔術:-)。

+0

哦,哇,我沒有想到!我會更多地關注Group類,但理論上,如果你說我可以用組來做到這一點,那麼創建第二個階段會更容易,還是更高效?謝謝 – Denfeet

+0

WonderfulWorld,我看了更多的小組,並看到你可以設置一個剔除區域,但是我仍然不明白如何使相機和播放器集中在這個組中。我沒有要求代碼示例(除非你可以),但是你能否詳細說明你建議的幫助類? – Denfeet

+0

那麼,如果可能的話,你一定要堅持1階段。讓我們說,除非你是反覆徹底重寫代碼的粉絲,否則這將爲你保留最大的靈活性。相機以舞臺爲中心,而不是任何一個組,但是這只是一個問題,因爲您只需要正確佈置遊戲組。只有在過度調用Group.localToStageCoordinates()時,如果使用Group.addActor(),則Actor的邊界將自動地相對於該組的座標(Actor)位置0工作,0是該組的0, 0.繼續 – WonderfulWorld

0

我總是喜歡將我的遊戲與UI分開。您可以創建一個全屏相機,並將其UI放置在Scene2D舞臺上。除非你想要的確切尺寸,你不必擔心定位,因爲你只是覆蓋你的UI元素。如果你想爲你的遊戲使用一個舞臺,那麼就創建一個第二階段,一個用於遊戲,另一個用於UI。

無論如何,看起來像你在像素思維。你的遊戲不需要知道像素,只需要渲染你的遊戲世界。如果我將有一個大小爲10 x 10的瓷磚,並且我想向玩家展示瓷磚的正方形10x10,我會爲它創建一個new FitViewport(100, 100)。該Viewport計算世界單位回到它正在運行的設備上的像素。這使得您或任何在您的程序中工作的人更符合邏輯。我的球員不是256 pixels高,因爲這是圖像的高度,沒有我的球員是1,80m高,並使用圖像來顯示。如果他想像忍者一樣跳躍,他應該跳過另一位球員說2m,他落在9.8m/s