2014-01-15 159 views
0

我正在進行一個小球模擬,其中球與其他物體(例如矩形)相碰撞。我的主循環看起來像這樣:與多個物體碰撞

while (true) { 
    entities.update(); // update all entities (e.g. ball, rectangles), move them 

    updateCollision(); // check for collision and inform colliding objects 
} 

在碰撞涉及球和只有一個對象的情況下,一切正常工作。球根據實施的物理學反彈。然而,當碰撞系統檢測到球與多個矩形同時碰撞時,它不起作用。爲什麼?當球擊中矩形時,它會改變方向並且沒關係。但是當球擊中兩個矩形時,它的變化方向是與第一個矩形碰撞的結果,然後由於與第二個矩形碰撞而再次改變方向。所以當這兩個長方形非常接近並且球落下並同時擊中它們時,球的方向會改變兩次,所以最後它根本不會改變。這一切都發生在updateCollision()函數的循環中的一次迭代中。我該如何改進這種機制才能正常工作?我會欣賞任何想法。

+0

很難想像你做了什麼沒有。但是,如果你收集球的所有碰撞,例如當前矢量和三角洲,然後將重複的垃圾箱,你會得到你想要的位置。您還可以對三角洲進行求和,以便您可以在遊戲區域的角落等等。 –

回答

0

也許你應該同時更新你的速度。當您將速度表示爲向量時,您可以計算所有碰撞更新,然後將這些更新線性組合到單個更新中。

看到這個職位,並採取到你的問題:Ball to Ball Collision - Detection and Handling