2013-05-10 80 views
0

在上一個項目(2D自上而下的遊戲)中,碰撞檢測非常簡單,檢測後如何處理。一切只能在4個方向上移動 - 上/下/左/右。光盤。像那樣工作:[物理] [2D] [碰撞]發生碰撞後應該怎麼辦

  1. 正常移動對象。
  2. 如果物體與其他物體相撞移回這取決於 方向這是怎麼回事(如往上走,打的東西會 打動你正好這個對象下文)

但現在我的工作一個項目,一切都可以在360 *中移動,所以我無法確定在檢測到碰撞後要移動這個對象的位置。由於大多數物體都有圓形的c.d.對我來說(自上而下的射手),所以我可以做這樣的事情:

  1. 移動對象爲正常
  2. 如果物體與其他物體相撞,這兩個 對象之間檢查角度,並設置其撞到了一個在另一邊的 其他人使用計算角度的圓。

的PIC它是如何工作的: Physics idea

,我不知道這是做這樣的事情正確的方法。 其他的想法是:

  1. 計算新的位置,但不保存它尚未
  2. 檢查是否有新的位置不會有任何衝突
  3. 如果沒有 - 保存位置
  4. 如果是這樣 - 不動

它更容易檢測到它,但是我猜會有空隙嗎? 因此,任何想法如何面對在360 *方向可以移動的圓形物體時的碰撞?

//編輯: 另外 - 遊戲將自上而下二維殭屍般的射手。 我確實對這兩種解決方案進行了編碼,並注意到: 如果存在這種情況,那個即時通訊站在這裏,並且有兩個殭屍。當第一次到我這裏時,他停下來。在角度版本中,第二個環繞着他,試圖靠近我。在其他版本中,他只是停下來。 在天使版中一切都會很好,但是如果有很多「殭屍」,他們往往會在他們周圍繞圈,甚至一個接一個時跳躍。 :|在技​​術上我可以通過它,因爲他們不必在遊戲中兩個殭屍之間保持恆定的最小距離,但有時它看起來很糟糕,我不想立即減少殭屍的數量。

回答

0

不久前我有一個similar question。起初,我只是在每次迭代中檢查兩個碰撞的球是否有新的方向和速度。然而,這有時會導致奇怪的碰撞,因爲它可能發生兩個球相互移動。

爲了防止/正確計算,必須在檢測到碰撞後計算確切的碰撞時間。我在我鏈接的問題的底部添加了計算此代碼的代碼。