2013-03-24 103 views
1

我在做一個遊戲中碰到碰撞檢測問題。我已經使用這個兩個對象之間的距離:需要幫助檢測兩個對象之間的碰撞

double b1Dist = Math.sqrt((obOneX - obTwoX) * (obOneX - obTwoX) 
      + ((obOneY - obTwoY) * (obOneY - obTwoY))); 
    double b1DistTwo = b1Dist - objectOneRadius; 
    b1DistFinal = b1DistTwo - objectTwoRadius; 

,我試圖做碰撞檢測與此:

if (b1DistFinal <= objectOneRadius && b1DistFinal <= objectTwoRadius) { 
      return false; 
     } 
     else 
      return true; 

    } 

我是新來的Java,所以我敢肯定,那裏有大概是多少更好/更有效的方式來寫上述內容,然而任何人都可以幫助我或指出我的方向正確嗎?

謝謝

回答

1

效率沒有什麼不對。但是,如果obOneX,obOneY等是對象中心的x和y座標,那麼您的公式是錯誤的。

變量b1DistFinal是兩個物體外邊緣之間的距離。如果它爲零,那些對象已經發生碰撞。

嘗試:

if (Math.abs(b1DistFinal) < 0.001) { 
    return true; 
} else { 
    return false; 
} 

注意:除了檢查,如果它到底是零,我檢查,如果它是接近零到雙算術期間允許一些舍入誤差。

相關問題