2013-04-16 81 views
0

我目前在AndEngine中構建一個遊戲,但是我的碰撞檢測似乎有點偏離。它在大多數情況下都是有效的,但是看起來像是當一個物體發生碰撞時,它不會做另一個物體。這很難解釋,而且非常難以預測。爲什麼我的碰撞檢測不可預測?

for (int i = 0; i < rManager.carArray.length; i++) 
{ 
    if (rManager.getInstance().snowArray[0].getSnowSprite().collidesWith(rManager.getInstance().carArray[i].getCarSprite())) 
    { 
     Log.e("SNOW", "snow 0 collided with " + rManager.getInstance().carArray[i].ToString()); 
     rManager.getInstance().carArray[i].setCarSpeed(0.1f); 
     break; 
    } 

    if (rManager.getInstance().iceArray[0].getIceSprite().collidesWith(rManager.getInstance().carArray[i].getCarSprite())) 
    { 
     Log.e("ICE", "ice 0 collided with " + rManager.getInstance().carArray[i].ToString()); 
     rManager.getInstance().carArray[i].setCarSpeed(1f); 
     break; 
    } 

    else 
    { 
     rManager.getInstance().carArray[i].setCarSpeed(0.5f); 
    } 
} 

我的代碼有什麼問題嗎?目前,敵方陣列只有1個元素。這就是爲什麼我只檢查0.

回答

2

這是因爲「break」關鍵字。當它被稱爲「爆發」周圍的循環。因此,如果第一個if語句檢測到衝突,它將不會再調用第二個if語句。