来自for循环的.intersects()不起作用

时间:2013-09-28 15:01:22

标签: java for-loop

我这里有两个arraylists,包含火箭和射弹:

public static ArrayList<Projectile> projectiles = new ArrayList<Projectile>();
private static ArrayList<Rocket> rockets = new ArrayList<Rocket>();

时不时地,一个射弹和火箭被添加到适当的arraylist:

rockets.add(new NormalRocket(x, -10, 70, 0, 2); // the constructor is (int x, int y, int speed, int dir, int health) but only x and y are relevant.

Rocket和Projectile类都有方法:

public Rectangle bounds() {
    return new Rectangle(x, y, width, height);
}

NormalRocket和MachineGunProjectile等子类也有它:

public Rectangle bounds() {
    return super.bounds();
}

现在,我有一种方法可以检查火箭和弹丸之间的碰撞,如下所示:

private void collision(){
    for(int i = 0; i < rockets.size(); i++){
        for(int j = 0; j < projectiles.size(); j++){
            if(rockets.get(i).bounds().intersects(projectiles.get(j).bounds())){
                System.out.println("HIT!");
            }
        }
    }
}

但是当它们相交时,似乎没有任何事情发生。有人知道发生了什么,或者这需要更多的代码来调试吗?

1 个答案:

答案 0 :(得分:1)

我会给你一些调试问题的提示

  1. 尝试绘制火箭和弹丸的x,y位置。

  2. 尝试绘制边界矩形,以便您可以看到边界矩形是否真的被正确绘制。

  3. 通过绘制两个CAN相交的矩形来检查交叉点函数并检查输出值。