2011-03-23 114 views
1

我正在編寫一個遊戲,您可以捕捉從屏幕頂部落下的物體(位圖)。這些位圖都將具有相同的圖像文件。但是,我希望隨機數量可以無限下降(直到遊戲「結束」)。現在我的問題是提出算法來檢測這些隨機生成的位圖的捕獲。當我只有一個圖像下落時,我可以註冊一個抓圖,但我不知道如何實現多個圖像下落並能夠實現碰撞檢測。到目前爲止,我提出了兩個想法。其中之一是有一個隊列,並且每個落下的對象在創建時都會放入隊列中。該程序只會檢測到盒子是否在隊列的第一個位置捕獲了對象。如果它(a)被捕獲或(到達屏幕上的某個點,那麼該對象將被取出)。我的另一個想法更多的是一個問題 - 我能夠爲這個掉落的Object創建一個類,並且有一個裏面的方法處理衝突?一個是始終監聽每當創建該類的一個新實例碰撞?隨機落下的物體和碰撞檢測方法

讓我知道你的想法和建議,請!

回答

2

如果你只是想檢查如果所有對象的速度和大小都相同,這將更容易,因爲您可以只使用一個隊列。

然後從最低的對象開始並檢查,直到您得到的對象對於可能的碰撞來說太高(如果框可以改變高度,則這可能會有所不同)。

例子:

|   6 | 
| 5   | 
| 3  4 | 
|    | 
+----2---------+ <-- if you reach an object at this height stop 
| 1   | 
| |__|  | 
+--------------+ 

假設你有6名高空墜物。如果他們被排序,你現在可以遍歷列表並檢查可能的衝突。如果達到高度閾值(對象2所在的位置),則可以停止,因爲它們還不能相互碰撞(無需檢查對象3-6)。

請注意,還有其他更復雜但更快的方法,但這應該讓你開始。

編輯:

這是一種掃描和修剪的算法,如果你想google一下。

另一種方法可以是計算ETA(估計的到達時間),即對於每個新對象計算它應該跨越閾值線的時間。然後按那個時間排序,並檢查所有時間差異爲< = 0(他們跨越門限線)。這對於不同大小和速度的物體以及捕捉箱處於固定高度的情況都適用。