我正在尝试用java制作一个突破性的游戏。球击中石头和球棒时会反弹,但击中墙壁后不会反弹。请参阅此粘贴了解我使用的内容。
任何人都可以发现代码中的错误...
谢谢
编辑:打印速度时,我得到这个输出。
vx 0.0 vy 0.0
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.0 vy 0.0
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
vx 0.02 vy -0.02
编辑
这就是解决方案。我已将bounce() 方法更改为此。
/**
* This object bounces back from the other object in a natural way. Please
* realize that the bounce is not completely accurate because this depends
* on many properties. But in many situations the effect is good enough. Had
* some bugs in pixel perfect detection mode if the image has a larger area
* of complete alpha. If using PPCD, make the object fit the image size by
* removing the alpha and resizing the image.
*/
public void bounce(GObject other){
int xd = (int) ((other.x + other.getWidth() / 2) - (x + getWidth() / 2));
int yd = (int) ((other.y + other.getHeight() / 2) - (y + getHeight() / 2));
if (xd < 0) {
xd = -xd;
}
if (yd < 0) {
yd = -yd;
}
if (xd > yd) {
dx = -dx;
} else {
dy = -dy;
}
}