这是一款简单的java游戏,它包含craft.java和wall.java类。图片中的所有红线都是墙类的对象
public void buildWall(){
walls.add(new Wall(10,10,getWidth()-10, 10));
walls.add(new Wall(10,10,10,getHeight()-10));
walls.add(new Wall(10,getHeight()-10,getWidth()-10,getHeight()-10));
walls.add(new Wall(getWidth()-10, getHeight()-10, getWidth()-10, 10));
walls.add(new Wall(100, 10, 100, 50));
walls.add(new Wall(150, 10, 150, 50));
}
我写了一个getBound2D()方法来定义行
public Wall(int x, int y , int z , int v){
this.x = x;
this.y = y;
this.z = z;
this.v = v;
vis = true;
line = new Line2D.Double(x,y,z,v);
}
@Override
public Rectangle2D getBounds2D() {
return new Rectangle(x,y,z,v);
}
但此方法无法正常工作。我的目的是当飞机触及任何一个线路检查碰撞并将游戏结束。我该如何解决?
答案 0 :(得分:3)
Line有自己的getBounds,因此你可以使用它:
它有getBounds()和getBounds2D();
垂直线的宽度为零,水平线的高度为零。
System.out.println(new Line2D.Double(0, 0, 0, 100).getBounds()+" "+new Line2D.Double(0, 0, 100, 0).getBounds2D());
要使垂直/水平线具有宽度/高度1,您可以将其定义为:
getBounds2D() {
return new Rectangle(x, y, z-x+1, v-y+1);
}