【发布时间】:2015-06-01 03:02:23
【问题描述】:
我有一个简单的 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 x 300 像素。
-
radius存储圆的半径。 -
xPosition和xPosition2存储两个球的 x 坐标。 -
yPosition和yPosition存储两个球的 y 坐标, -
xSpeed和xSpeed2存储两个球的 x 速度。 -
ySpeed和ySpeed2存储两个球的 y 速度。
【问题讨论】:
-
欢迎来到 SO,鲍勃。这实际上更像是一个数学问题而不是一个编程问题,因为没有办法做你想要内置到 Java 语言中的东西。不过,为了让您开始,请这样想:检测碰撞意味着检测球何时会重叠或接触,对吧?你知道他们的位置和大小......
-
是的,但我什么都想不出来。我试着通过数学来做,结果我得到了一个相互穿过的球和大约 30 行无用的代码
标签: java awt collision-detection