2013-02-18 103 views
1

我正在開發一個遊戲,在一個隨機路徑的場景中連續生成一個精靈。我將路徑修飾符應用於它們。在場景中隨機移動時,一個精靈與其他精靈重疊。 我想停止這種重疊。碰撞檢測與兩個相同的精靈對象andengine?

瞬間,我找到了兩個解決方案。 (可能)

第一個:這個原因,我想如果我發現他們之間的碰撞&然後給一個新的路徑可以解決。

第二個:如果我暫停路調節2/3秒時發生碰撞,並再次重新開始移動的路徑修改後(這可能嗎?)

我第一次嘗試的辦法現在。 問題:我無法唯一識別sprite以在Update處理程序中進行迭代。我不使用圖層來附加。

我用通用池生成&回收它們。

代碼

public Iterator<EasyEnemy> eIt; 

registerUpdateHandler(new IUpdateHandler() { 
     @Override 
     public void onUpdate(float pSecondsElapsed) { 
      try { 
       // ===get EasyEnemy List from it=== 
       eIt = getEasyEnemyIterator(); 
       while (eIt.hasNext()) { 
        EasyEnemy ee = eIt.next(); 

        // need some help here 
        if (ee.collidesWith(ee)) { 

         // this doesn't work. 

        } 
       } 
      } catch (Exception e) { 
      } 
     } 

     @Override 
     public void reset() { 

     } 
    }); 

我儘量讓其專注我的問題。如果有人有更好的解決方案,請幫助可以幫助我。

回答

3

ee變量描述了你想檢查碰撞的對象。 ee碰撞的另一個物體在哪裏?基本上你正在檢查與ee碰撞。

的對象將永遠不會與它自身碰撞:)

你需要有兩個不同的對象,他們之間的碰撞檢查。 像這樣的情況下,你有一個ArrayList中的所有對象。

for(int i = 0; i< yourList.size()-1;i++) 
{ 
    for(int j = 0; j< yourList.size()-1;j++) 
    { 

     if(yourList.get(i)!= yourList.get(j)) 
     { 
      if(yourList.get(i).collideswith(yourList.get(j)) 
      { 
      //do what you want to do on collision :) 
      } 
     } 

    } 

}