我在一个具有位置,速度和加速度属性的球类内部有一个方法。我正在尝试创建基本版本的碰撞检测,其中涉及计算两个球之间的距离。我的距离有以下代码:
public float getDistance(Ball ball2)
{
float distance = (float) (Math.sqrt(Math.pow(ball2.x - x, 2) +
Math.pow(ball2.y - y, 2)));
return distance;
}
在代码的另一部分中,我重复打印此距离的值,并且一直保持为零。这是为什么?
编辑:我想通了。我忘记了位置的坐标已存储在矢量对象中,因此与其说Ball2.x,不如说我说的是ball2.position.x。现在一切正常,我的程序正在运行。感谢大家的帮助!我不确定这个问题是否应该结束,或者什么,但是mods认为最合适的!
最佳答案
该方法很好。问题出在其他地方。
可能是ball2.x == this.x
和ball2.y == this.y
。这可能是因为ball2
和this
是同一对象,或者是因为忘记了初始化x
和y
的原因,或者是由于其他多种可能的原因。
另一种可能性是您要打印的值不是调用distance()
的结果,而是其他原因(例如,由于代码错误)。