编辑:以下是完整代码:https://dl.dropboxusercontent.com/u/65678182/assignment1.rar非常感谢任何可能的帮助!
我正在尝试制作突破游戏的副本,但我在检查两个物体(球和球拍)是否相交时遇到问题。
我现在有这种碰撞检测方法:
public static void handleCollisions()
{
System.out.println(ball.getBounds()); // just to check that they
System.out.println(paddle.getBounds()); //are there and moving correct
if (ball.getBounds().intersects(paddle.getBounds()))
{
System.out.println("collision");
}
}
我很确定getBounds的工作原理应该是因为我从println获取这些输出: java.awt.Rectangle中[X = 393,Y = 788,宽度= 14,高度= 14] java.awt.Rectangle中[X = 350,Y = 350,宽度= 100,高度= 10]
getBounds code:
public static Rectangle getBounds()
{
return new Rectangle(x, y, radius*2, radius*2);
}
我可以看到它们在一个点上移动它们是重叠的,但是方法从未检测到它。
我对此很新,所以希望它在某个地方只是一些愚蠢的错误,任何帮助都会受到赞赏。如果有必要,我可以发布更多代码,但不愿意。
答案 0 :(得分:3)
java.awt.Rectangle[x=393,y=788,width=14,height=14]
java.awt.Rectangle[x=350,y=350,width=100,height=10]
正如你可以看到第二个矩形的y /高度350/10但是第一个y = 788
显然,他们没有一个在另一个之上的交叉点
UPDATE 还有一件事
public static Rectangle getBounds()
{
return new Rectangle(x, y, radius*2, radius*2);
}
如果x和y是球的中心,则代码应为
public static Rectangle getBounds()
{
return new Rectangle(x-radius, y-radius, radius*2, radius*2);
}