2014-10-30 70 views
1

情況:我正在用libGDX編寫2D等距風格的Java遊戲。 現在我有一個可移動的播放器,可以正確碰撞固體物體的瓦片。如何實現等角拼貼的邏輯渲染順序?

問題: 現在談到瓷磚的渲染器。默認情況下,庫代碼從底層maplayer呈現到頂層。 (地面是第0層,物體層是第1層)這是有道理的。我在上面畫出了玩家。這意味着玩家總是在某些情況下沒有意義的事情之上。

目標:由於等距外觀意味着有一種3D透視圖,玩家可以在物體的後面或前面。所以我不得不提出一些代碼來決定玩家是在後面還是在前面。我有這樣的冰箱爲例:

Example

我希望這是可以理解我的意思與「邏輯的碰撞」。我有一些想法如何實現這一點,但這將是一個混亂的代碼。所以我想問問任何人是否有這方面的經驗,或者可以給我提供一些可以幫助我的好消息。

感謝您的閱讀!

+3

當然顯而易見的解決方案是維持玩家在** **無論背後或其他對象的前面對象層的一些想法。 – OldCurmudgeon 2014-10-30 22:36:34

+0

是的,我的問題是做這件事的最好方法是什麼。你只是重複我的問題/問題。 – Pixell 2014-10-31 09:07:25

+3

[畫家算法](http://en.wikipedia.org/wiki/Painter%27s_algorithm)可能是一個好的開始。不知道你正在使用哪個渲染庫,很難提供建議。消極的態度也沒有幫助。 – OldCurmudgeon 2014-10-31 09:36:21

回答

0

這取決於你如何渲染。想到的一件事是,從上到下,從左到右渲染對象/瓷磚,這樣在大多數情況下,對象應始終處於正確的層次。現在取決於你如何製作圖形,這可能存在缺陷。如果是這樣,你也可以有幾層優先級,繪製對象/瓷磚的不同部分,或在其他部分之前繪製某些東西。如果你還有不同類型的圖塊和對象,你可以讓對象有能力在圖塊前後畫圖,以滿足不同的需求。對於這樣的情況,您也可以實現一些圖塊以獲得對象,但與我提到的其他方法相比,這也可能浪費處理器時間。

如何將對象位置與瓷磚位置進行比較實際上並不困難。可能一個足夠的方法是將瓷磚位置與對象位置進行比較。讓我們假設一個假設的情況,在那裏您的瓷磚尺寸爲32 x 32,並且存在對象25 x 18。對象將是瓷磚前在偏移0 X 01×0,但背後0 X 11×1(如果我們想象中的瓦片從上角開始)。因此,我們首先在0 X 0繪製瓷磚,和1×0,則對象,然後拼貼在0 X 11×1。它應該自然地落在它正確的位置,用相當簡單的代碼邏輯。

希望你有關於如何實現它:)