2015-12-18 84 views
-2

考虑拥有ArrayList<Rectangle> rectangles = new ArrayList();和具有矩形变量的Player类,Character c = new Character(new Rectangle(x,y,w,h));。 Character类有一个update()像这样:矩形命中检测Java

public void update(){ 
rectangle.x = rectangle.x + xSpeed; 
rectangle.y = rectangle.y + ySpeed; 
} 

xSpeed & ySpeed不断变化,update()的不断呼吁。

如何正确检查,如果字符矩形和任何矩形ArrayList中相交的,如果是防止字符矩形移动?

+1

似乎你甚至还没有尝试过自己,看你的代码。请付出更多的努力。这不是一个演练网站。回来的时候,你有一个具体的问题 –

回答

0

看看Rectangle API,你会看到一个可以使用的intersects(Rectangle r)方法。 Intersects Method

您可以通过使用一个循环将物体与ArrayList中的所有对象的矩形比较检查碰撞每次​​更新。如果该方法返回true,那么不管你喜欢如何处理碰撞。

+0

是IM意识到这一点,但我明白,有处理命中检测在一场比赛中,这样从移动矩形阻止更新方法 – TheBoxOkay

+0

你需要在绘制之前更新指定的方式。在你接受更新结果之前,这是你检查碰撞的时候。创建临时更新的x和y值,然后检查碰撞,如果没有,则将实际的x和y设置为临时位置。您需要进行另一个循环来将当前对象与所有其他对象进行比较。或者,您可以手动检查所有其他矩形的边缘。但这只是针对特定用途,我不知道你的物体应该如何反应。 – Sterls