我有一个简单的Java小程序,有两个用户控制的球,使用绘制java.awt
.我需要一种方法来检测它们之间的碰撞.我有一个检测墙壁碰撞的算法:
if (xPosition > (300 - radius)){ xSpeed = -xSpeed; } else if (xPosition < radius){ xSpeed = -xSpeed; } else if (yPosition > (300 - radius)) { ySpeed = -ySpeed; } else if (yPosition < radius){ ySpeed = -ySpeed; } xPosition += xSpeed; yPosition += ySpeed;
而对于第二球:
if (xPosition2 > (300 - radius)){ xSpeed2 = -xSpeed2; } else if (xPosition2 < radius){ xSpeed2 = -xSpeed2; } else if (yPosition2 > (300 - radius)) { ySpeed2 = -ySpeed2; } else if (yPosition2 < radius){ ySpeed2 = -ySpeed2; } xPosition2 += xSpeed2; yPosition2 += ySpeed2;
小程序是300像素乘300像素.
radius
存储圆的半径.
xPosition
并xPosition2
存储两个球的x坐标.
yPosition
并yPosition
存储两个球的y坐标,
xSpeed
并xSpeed2
存储两个球的x速度.
ySpeed
并ySpeed2
存储两个球的y速度.
Beothorn.. 6
使用http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/Point2D.html,那里有一个距离法,如果它小于它们碰撞的半径.
编辑:错误,小于半径*2,对不起
使用http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/Point2D.html,那里有一个距离法,如果它小于它们碰撞的半径.
编辑:错误,小于半径*2,对不起