2012-06-23 37 views
3

我目前正在建立一個as3等距遊戲,但我有很多深度排序的問題。我搜索了一個解決方案,但沒有找到任何符合我的問題的東西(矩形對象)。等距深度排序問題與大對象

這裏是我的遊戲截圖:

enter image description here

正如你所看到的,深度排序工作得很好時,它的1x1的瓷磚對象之間。我只是使用它們的x和y座標(相對於等軸測圖)對它們進行排序。

問題出在我有更大的物體時,比如2x2或1x4或4x1。

任何想法我應該如何處理深度排序呢?

回答

7

我不認爲這是可能的排序基於每個對象的單個xy值,如果他們中的一些可以足夠長的一端應在不同的深度比其他的場景。例如,考慮如果圖片中的棕色椅子向左移動一個方塊(到藍色椅子和長沙發之間的方塊),如何處理渲染。在現場比在沙發後面的紅色桌子要深一些,但需要在沙發頂部呈現,這需要放在桌子的頂部。

我認爲有兩個簡單的解決方案:

  • 僅使用一種類型的重疊的大對象設計您 水平。對於 實例,您可以指定對象的深度基於其最近的角落,這會要求您避免將東西放在距離最遠的位的前面(因爲它會渲染頂部)。 或者您可以堅持使用您當前的代碼(似乎使用深度最遠的角落 ),並避免將任何東西放在距離較近的部分後面。儘管如此,您仍然可能遇到字符和其他可移動的對象。如果您仔細處理設計,您可能無法訪問令人煩惱的瓷磚 ,但在某些情況下,這可能過於嚴格。
  • 將您的大物體分解成較小的物體 ,這些物體會有自己的深度。您可能會想要將 降至1x1塊,每塊都會有明確的深度。您可能會選擇將代碼中較大的對象作爲不可見的 容器用於較小的部分,或者可以完全取消 ,無論哪種方式都可以讓您更容易地加載和啓用與各個位的交互。

將較大的物體分割成1x1大小的塊也可以很好,因爲可以使它們變爲模塊化。也就是說,您可以通過將1x1件以不同的組合組合在一起來構建不同大小的對象。例如,如果您將圖像中的2x1桌面垂直切成一半,並創建了一個適合它們的中間圖塊,則可以將圖案拉伸至3x110x1,具體取決於您重複中間圖塊的次數。有很多其他方法可以使平鋪圖形看起來不錯,只需要適量的藝術品。

+0

感謝您的回答。我肯定不能使用第一種解決方案,因爲它是建立自己的賭場的用戶。我不能把他的限制。但第二個解決方案看起來很有趣,我會嘗試一下,看看我能不能找到工作。 ;) – Sanchex

2

Ultima Online仿真器(特別是POL,雖然可能有其他的)通過實現和使用'multi'的概念來實現這一目標 - 一個單獨的對象由分割更大的圖形組成。這些切割圖形使得它們的精靈在iso網格邊界的左角點和右角點垂直分割。

其他注意事項: - 渲染'多個'部分從上到下排列屏幕-Y軸。 - 「多」的南部(即屏幕左下角)組件成爲錨定瓷磚位置(在您的沙發中,它的最左邊的部分)。 - 考慮到每個地圖位置也可以保存自己的垂直堆棧對象;通過屏幕-Y模擬每個對象的渲染,模擬高度/高度,並且這些必須從下到上排序(例如從最低高度到最高高度)。

祝你好運!