我正在制造爆炸。爆炸应该击中其矩形(x,y,x + w,y + h)内的所有敌人。爆炸和敌人都继承自 Sprite 类,该类具有返回其矩形的 getBounds() 方法。当我创建爆炸项目时,我在构造函数中循环遍历敌人以检查矩形是否与 rectangle.intersects(rectangle2) 相交。但似乎当有多个目标应该相交时,有时检查会忽略其中一些......
下面是一些代码:在类Explosion的构造函数中,继承类Sprite
List<Zombie> zombies = mGamePlay.getZombieHandeler().getZombies();
Rect r = getBounds();
for(int i = 0; i < zombies.size(); i++)
{
Rect zR = zombies.get(i).getAnimation().getBounds();
if(!zombies.get(i).isDead() && r.intersect(zR))
zombies.get(i).doDamage(new int[]{damage, 0, 0});
}
内部类 Sprite:
public Rect getBounds()
{
return new Rect(mPosX, mPosY, mPosX + mWidth, mPosY + mHeight);
}