1

这是我的两个敌人

en = new Enemy(700, 150);
en2 = new Enemy (980, 150);

我想让我的程序包含几个敌人,我只需要重新创建它们并进行单元碰撞

if (d.intersects(r1) && en.visible == true &&
        en.isAlive == false && !p.hitting){
    hitmang(hit);
    p.hitting = true;
}  

if (d.intersects(r2) && en.visible == true &&
        en.isAlive == false && !p.hitting){  
    hitmang(hit);
    p.hitting = true;
}

if (!d.intersects(r1) && !d.intersects(r2)){
    p.hitting = false;
}

我必须用另一个敌人重新创建每个实例吗?

这些是我的敌人加上他们在游戏中的界限

Rectangle r1 = en.getBounds();
Rectangle r2 = en2.getBounds();

(我将它们作为矩形)

public Rectangle getBounds(){
    return new Rectangle(x, y, 114, 134);
}
4

1 回答 1

0

我不完全明白你要做什么?

你想将你的敌人添加到一个数组中,然后循环遍历它们以检查敌人边界框是否与玩家相交吗?

public List<Rectangle> enBoundingBoxes = new ArrayList<Rectangle>();

然后将敌人边界框添加到数组列表中。

enBoundingBoxes.add(en.getBounds());
enBoundingBoxes.add(en2.getBounds());

使用 for 循环遍历它们:)

for (int i = 0; i < enBoundingBoxes.size(); i++) {
Rectangle tempBBox = enBoundingBoxes.get(i);

if (d.intersects(tempBBox) && en.visible == true && !en.isAlive == false && !p.hitting) {
    hitmang(hit);
    p.hitting = true;
   }
}

etc etc...

那是你所追求的吗?

祝你好运,我希望它有所帮助:)

编辑:我没有检查这是否有效,我在浏览器中写了它......

于 2012-12-28T04:44:43.540 回答