2013-03-24 61 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; 
} 

注意:除了检查,如果它到底是零,我检查,如果它是接近零到双算术期间允许一些舍入误差。

相关问题