我在制作游戏时遇到一些有关碰撞检测的问题。我使用此两个对象之间的距离:

    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的新手,所以我敢肯定可能有更好/更有效的方式编写上述内容,但是任何人都可以帮我一下或指出正确的方向吗?

谢谢

最佳答案

效率没有错。但是,如果obOneXobOneY等是对象中心的x和y坐标,则您的公式是错误的。

变量b1DistFinal是两个对象的外边缘之间的距离。如果为零,则这些对象已碰撞。

尝试:

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


注意:我不是在检查它是否完全为零,而是在检查它是否接近零,以便在双精度算术期间出现一些舍入误差。

关于java - 需要帮助检测两个物体之间的碰撞,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15594954/

10-13 01:12