我这里有两个数组列表,分别包含火箭和弹丸:
public static ArrayList<Projectile> projectiles = new ArrayList<Projectile>();
private static ArrayList<Rocket> rockets = new ArrayList<Rocket>();
时不时地,将射弹和火箭添加到适当的数组列表中:
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!");
}
}
}
}
但是当它们相交时,似乎什么也没有发生。有人知道发生了什么吗,还是需要更多代码来调试?
最佳答案
我会给你一些提示来调试你的问题
尝试画出火箭和弹丸的x,y位置文字。
尝试也绘制边界矩形,以便您可以查看边界矩形是否正确绘制。
通过绘制两个可以相交的矩形并检查输出值来检查相交功能。
关于java - for循环的.intersects()不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19068296/