2014-02-28 67 views
0

我將如何處理並記錄發生的碰撞數量?我有一個簡單的碰撞檢測,它會檢測一個對象是否與另一個碰撞,現在我希望記錄它們之間的碰撞。記錄收集檢測和輸出碰撞數量

代碼碰撞

public void CompositionTarget_Rendering(object sender, EventArgs e) 
    { 
     appleTimer += 1; 
     if (appleTimer > 60) 
     { 
      appleTimer = 0; 
      AddApple(new Apple()); 
     } 

     for (int indx = 0; indx < myapples.Count; indx++) 
     { 
      myapples[indx].Update(LayoutRoot); 

      bool collided = DetectCollision(myapples[indx], myPig); 
      if (collided) 
      { 
       // record how many apples are eaten here 
       RemoveApple(myapples[indx]); 
       indx--; 
      } 

     } 
+0

在循環'int count = 0;'和代替你的註釋'count ++;'?之前? –

+0

感謝您的建議 – Beep

回答

1

如果非要從列表中刪除對象,而通過列表循環,更容易循環向後爲了不弄亂指數:

int eatenAppleCount = 0; 
    for (int indx = myapples.Count - 1; indx >= 0; indx--) { 
     myapples[indx].Update(LayoutRoot); 
     bool collided = DetectCollision(myapples[indx], myPig); 
     if (collided) { 
      eatenAppleCount++; 
      RemoveApple(myapples[indx]); 
     } 
    } 

注意:如果myapplesList<Apple>那麼你可以刪除一個蘋果與

myapples.RemoveAt(indx); 

如果myapples是一個數組,請將其替換爲一個列表。數組只能在長度不變的情況下使用。列表是可以增長和縮小的動態「數組」。

+0

非常感謝您的幫助,很多撥款 – Beep