我在制作游戏时遇到一些有关碰撞检测的问题。我使用此两个对象之间的距离:
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的新手,所以我敢肯定可能有更好/更有效的方式编写上述内容,但是任何人都可以帮我一下或指出正确的方向吗?
谢谢
最佳答案
效率没有错。但是,如果obOneX
,obOneY
等是对象中心的x和y坐标,则您的公式是错误的。
变量b1DistFinal
是两个对象的外边缘之间的距离。如果为零,则这些对象已碰撞。
尝试:
if (Math.abs(b1DistFinal) < 0.001) {
return true;
} else {
return false;
}
注意:我不是在检查它是否完全为零,而是在检查它是否接近零,以便在双精度算术期间出现一些舍入误差。
关于java - 需要帮助检测两个物体之间的碰撞,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15594954/