Java Android Rectangle.intersects在循环中无法正常工作

Ras*_*mus 1 java android intersection rectangles

我正在爆炸.爆炸应该击中它的矩形内的所有敌人(x,y,x + w,y + h).爆炸和敌人都继承自Sprite类,该类具有返回其矩形的getBounds()方法.当我在构造函数中创建爆炸项目时,我会通过敌人来检查矩形是否与rectangle.intersects(rectangle2)相交.但似乎当有多个目标被支持相交时,检查会忽略其中一些......

这是som代码:在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});
    }
Run Code Online (Sandbox Code Playgroud)

内部类Sprite:

public Rect getBounds()
{
    return new Rect(mPosX, mPosY, mPosX + mWidth, mPosY + mHeight);
}
Run Code Online (Sandbox Code Playgroud)

Rom*_*Guy 5

Rect.intersect()将修改源矩形并将其设置为两个矩形相交的交点.这在javadoc中提到.这意味着在第一次成功的交叉测试之后,后续的交叉测试可能会失败(它们只会传递给与原始交叉矩形相交的僵尸.)

相反,你应该使用Rect.intersects()(最后用's'.)