我正在开发一个垂直滚动游戏,为了创建命中检测/碰撞,我决定从rectangle类中删除intersects方法:
public boolean intersects(Rectangle r){
return r.width > 0 && r.height > 0 && width > 0 && height > 0
&& r.x < x + width && r.x + r.width > x
&& r.y < y + height && r.y + r.height > y; }
并用图像方法改变这种方法的所有“内部成分”。问题是,image类中没有像“.getx()”那样返回jpanel上图像对象的位置的方法。我试图为屏幕上的每个图像创建一个单独的矩形对象,并将其用作一个hitbox,但这似乎有点浪费,我已经没有主意了。
1条答案
按热度按时间cbeh67ev1#
这是我很久以前做的事:
基本上是为了你的
GameObject
您应该有一个类来封装GameObject
它的数据(如x,y,高度和宽度等),这个类应该有一个Rectangle2D
与它有关的任何运动GameObject
事实上应该移动Rectangle2D
与之相关的代码如下:然后你只要画你的
GameObject
使用下面的逻辑(您得到GameObject
以及相关矩形的x和y坐标):然后你可以使用
Rectangle2D
学生:它将返回一个
Rectangle2D
这样你就可以简单地调用Rectangle2D#intersects
方法(参见getBounds2D
以及intersects(GameObject go)
以上的GameObject
类别),即: