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)
Rect.intersect()将修改源矩形并将其设置为两个矩形相交的交点.这在javadoc中提到.这意味着在第一次成功的交叉测试之后,后续的交叉测试可能会失败(它们只会传递给与原始交叉矩形相交的僵尸.)
相反,你应该使用Rect.intersects()(最后用's'.)