编辑:这里是完整的代码: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);
}
,我可以看到他们的移动在某一时刻它们重叠,但该方法从未检测到它。
我对此很新,所以希望它只是一些愚蠢的错误的地方,任何帮助表示赞赏。如有必要,我可以发布更多的代码,但宁愿不要。
'Rectangle.intersects()'的工作原理和你迄今向我们展示的内容似乎没问题。问题在其他地方,你没有向我们展示的部分。例如,你确定你应该是在调用'handleCollisions()'吗?你确定'ball'和'paddle'是否正确地引用了所讨论的对象?当你在每一帧打印他们的边界框值,你真的看到它们重叠?作为一个测试,试着将球的位置初始化,直接放在桨的顶部,并禁用运动;这将使您更容易看到您的碰撞检测是否正常工作。 –
如果您向我们展示的输出是* only *输出,则表明您没有在每一帧调用'handleCollisions()',因为您希望看到多个打印输出(加上您向我们展示的示例实际上并不相交,但我假设这是因为它只是一个任意的例子)。 –
有一个可运行的例子吗? – MadProgrammer