2017-03-27 68 views
0

我有這些'怪物',當它們到達屏幕底部時,它們會不斷創建和刪除。他們左右移動,我希望它們在碰觸時(或者如果它們是在彼此的頂部創建的),其中一個移開。碰撞代碼不起作用

目前我在管理類的怪物:

public void update() { 
    int i = 0; 
    while(i < (Constants.NUMBER_ENEMIES-2)) { 
     if (Rect.intersects(npcManager.getList().get(i).getRectangle(), npcManager.getList().get(i + 1).getRectangle())) 
      npcManager.getList().get(i).setRectangle(200); 
     i += 1; 
    } 
} 

凡npcManager是一個實例,並且它的thelist得到我們的NPC組成的數組列表。我創建的setRectangle方法是:

public Rect setRectangle(int move) { 
    rectangle.top += move; 
    rectangle.bottom += move; 
    return rectangle; 
} 

它應該將NPC向下移動200,以便它不再發生碰撞。

我的問題是,有什麼理由爲什麼這段代碼不工作?目前矩形只是通過每個其他的代碼,代碼沒有任何影響。

+3

你只是檢查一個矩形是否與列表中的下一個碰撞('i','i + 1'):如果第一個矩形與最後一個矩形碰撞會發生什麼? – BackSlash

+0

可能是因爲代碼中的某處存在缺陷而無法顯示?嘗試創建[mcve];或學習使用調試器。我們不能幫助這樣的輸入。 – GhostCat

+0

@ backlash目前只有兩個項目在列表中,只是想保持簡單,同時檢查 - 我應該澄清,對不起 – George

回答

0

通過查看敵人的數量 - 2(當此特定情況下的敵人數量爲2時),while循環從未啓動且代碼未運行。

+0

@GhostCat這個問題被超過50人看了,並且upvoted,我相信最好是展示解決方案,而不是讓人們在黑暗中。另外,如果您閱讀了評論,我的第一個回覆中會給出敵人的數量。請不要太有毒。 – George

+0

當然。你的選擇。 – GhostCat