需要帮助检测两个物体之间的碰撞

时间:2013-03-24 03:46:46

标签: java collision-detection

我正在制作一款关于碰撞检测的问题。我使用这两个对象之间的距离:

    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 个答案:

答案 0 :(得分:1)

效率没有任何问题。但是,如果obOneXobOneY等是对象中心的x和y坐标,那么您的公式就错了。

变量b1DistFinal是两个对象外边缘之间的距离。如果它为零,那些对象就会发生碰撞。

尝试:

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

注意:我没有检查它是否正好为零,而是检查它是否关闭为零,以便在双重算术期间出现一些舍入错误。