需要帮助检测两个对象之间的碰撞
问题描述:
我在做一个游戏中碰到碰撞检测问题。我已经使用这个两个对象之间的距离:需要帮助检测两个对象之间的碰撞
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;
}
注意:除了检查,如果它到底是零,我检查,如果它是接近零到双算术期间允许一些舍入误差。