矩形命中检测Java

矩形命中检测Java,java,class,arraylist,rectangles,Java,Class,Arraylist,Rectangles,考虑使用ArrayList矩形=新的ArrayList()和一个Player类,该类有一个矩形变量,Character c=new Character(new rectangle(x,y,w,h))。Character类有一个update(),如下所示: public void update(){ rectangle.x = rectangle.x + xSpeed; rectangle.y = rectangle.y + ySpeed; } 其中xSpeed和ySpeed不断变化,并且不断调

考虑使用
ArrayList矩形=新的ArrayList()
和一个Player类,该类有一个矩形变量,
Character c=new Character(new rectangle(x,y,w,h))。Character类有一个
update()
,如下所示:

public void update(){
rectangle.x = rectangle.x + xSpeed;
rectangle.y = rectangle.y + ySpeed;
}
其中
xSpeed
ySpeed
不断变化,并且不断调用
update()


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

查看矩形API,您将看到可以使用的相交(矩形r)方法


通过使用循环将对象与ArrayList中的所有对象矩形进行比较,可以在每次更新时检查碰撞。如果该方法返回true,那么您可以随心所欲地处理冲突。

从代码的外观来看,您自己似乎还没有尝试过。请再努力一点。这不是一个演练站点。当你有特定问题时回来是的,我知道这一点,但我知道在游戏中有一种特定的方法来处理命中检测,这样更新方法就不会移动你需要在绘制之前更新的矩形。在接受更新的结果之前,检查碰撞。创建临时更新的x和y值,然后检查碰撞,如果没有,则将实际x和y设置为临时位置。您需要进行另一个循环以将当前对象与所有其他对象进行比较。或者,您可以手动检查所有矩形的边与所有其他矩形的边。但这只是为了特定的用途,我不知道你的对象应该如何反应。