2010-11-01 80 views
0

我試圖開發方面卷軸遊戲爲Android涉及許多許多的紋理,所以我在想,如果我可以創建一個單獨的層,所有的單個獨特的顏色(非常類似於綠屏效果)讓一個可疑的,並使其不可見的球員。可碰撞顏色的Java/Android的遊戲

(前景層)視覺圖片

(第二層)前景層的可碰撞副本與主字符

(第三層)背景​​圖像

我不知道這是可能的,或者如何有效地實施它,這個想法在一天內隨機出現。

未來的問候,感謝

回答

1

我假設你的遊戲完全是2D,即使用比特位塊傳輸或四邊形(兩個3D三角形總是屏幕對齊)的精靈。多年來,已經有很多使用實際圖像數據進行碰撞檢測的方案,無論是來自背景還是精靈定義本身。如果您可以直接訪問視頻RAM,則讀取一個像素位置可以快速判斷您是否發生了碰撞,從而無法像邊界框那樣提供像素精度。不過,也有很大的問題,這個複雜:搞清楚什麼已經與碰撞,或者如果你的速度,你的土地的像素數量爲圖形對象,或者如果它是薄,你通過它,或如何確定的角度偏轉等

使用3D圖形硬件和四邊形的,則可以潛在地改變渲染狀態,在單色渲染到離屏紋理,得到您所描述的第二可碰撞層。然而,這種紋理隨後駐留在圖形內存中,不像系統內存那樣隨意/容易地訪問。通過總線來回傳輸數據很慢。這也是昂貴的,需要整個額外的渲染通道(最糟糕的情況下,你的幀速率減半),再加上所有額外的圖形RAM用完......都只是爲了做一些像碰撞檢測。存在更好的方案,特別是使用數據結構。

這是更好地使用邊界框,或子包圍盒,甚至一個層次。在此之後,您可以確定您是否落在斜坡線的另一側,只需要分割/添加操作。你的遊戲已經管理你正在移動的所有精靈,所以集成了一些數據結構來幫助你檢測碰撞。例如,我剛剛在another thread中建議使用鏈表來限制你必須碰撞檢測的對象。

想法像你可能並不總是工作,但你的不斷創新思維將導致那些事。有時候你只需要嘗試編碼就可以找到!

+0

好吧,我明白你的意思。我會研究包圍盒和圓圈。謝謝 – Mr13p 2010-11-01 20:22:35