2010-07-07 103 views
6

首先,我的問題並不是特定於C#或XNA,但我的代碼示例將使用這些。檢測移動對象與不移動對象之間的碰撞

我目前正在嘗試製作Pong克隆,並且遇到碰撞檢測問題。每個對象基本上都有一個特定的速度(這是一個Vector2),位置(Vector2,也)和速度(只是一個浮點數)。在對象的每個更新()調用,位置改變了這種方式:

Velocity.Normalize(); 
Position += Velocity * Speed; 

起初,我只有在當前有一個簡單的相交()調用從矩形兩個物體之間的碰撞檢查對象。我很快意識到,我不僅可以檢查對象是否是當前與另一個碰撞,而是如果對象與對象在途中相撞。當速度太高時,只檢查兩個物體當前是否碰撞使球通過槳。

我試過不同的事情來解決這個問題,但他們都沒有工作。我只需要一種方法來檢查兩個物體是否在途中發生碰撞,如果它們是這樣,是否來自水平,垂直或兩者(相應地改變球的速度)。

我不一定需要解決方案,也許只是如何實現這個基本想法,我會自己編寫它。

謝謝你的時間。

回答

0

如果兩個點對象具有相同的位置,那麼他們發生了碰撞。

+0

我不認爲這很簡單。非常少的圖形只有一個點的大小。 – Adkins 2010-07-07 14:18:34

+0

如果兩個圓形物體在其半徑之和內,則它們發生碰撞。 – mcandre 2010-07-07 14:29:28

+0

我實際上正在尋找一個解決方案,如果在Update()調用期間具有一定寬度和高度的兩個對象發生碰撞。 – 2010-07-07 20:23:10

1

如果一個對象速度太快,它可以在調用Update()之前傳遞不可移動的對象(如它通過不可移動的對象)。

延長對象的形狀隨着速度的大小的移動向量: 廣場[0,0][2,2]與速度[1,0]和速度10將創建矩形[0,0][12,2]的形狀=>它現在定位在COORDS [0,0]與大小[12,2]

現在將該矩形與不可移動的對象相交。現在你知道他們是否相撞。