我有一系列爆炸和一系列僵尸,我怎样才能有效地检测到碰撞?

时间:2015-02-21 01:13:57

标签: libgdx game-physics

我有一系列爆炸和一系列僵尸,但我正在努力找到一种方法来有效地检测碰撞并移除碰撞的爆炸和僵尸。有什么建议?

    Iterator<Rectangle> blastIter = blasts.iterator();

    while(blastIter.hasNext()) {
        Rectangle blast = blastIter.next();
        blast.x += 200 * Gdx.graphics.getDeltaTime();
        if(blast.x + 16 > 800) blastIter.remove();
    }

    Iterator<Rectangle> zombieIter = zombies.iterator();

    while(zombieIter.hasNext()) {
        Rectangle zombie = zombieIter.next();
        zombie.x -= 150 * Gdx.graphics.getDeltaTime();
        //if(zombie.overlaps(blast)) zombieIter.remove();
    }

2 个答案:

答案 0 :(得分:1)

制作嵌套循环,就像你在那里一样,但是一个在其他内部(里面不重要),所以你将拥有来自这两个列表的objecst的所有组合。

答案 1 :(得分:1)

你需要将另一个迭代器放在另一个迭代器中,试试这个:

Iterator<Rectangle> zombieIter = zombies.iterator();

while(zombieIter.hasNext()) {

    Rectangle zombie = zombieIter.next();
    zombie.x -= 150 * Gdx.graphics.getDeltaTime();

    Iterator<Rectangle> blastIter = blasts.iterator();

    while(blastIter.hasNext()) {

        Rectangle blast = blastIter.next();
        blast.x += 200 * Gdx.graphics.getDeltaTime();

        if(blast.x + 16 > 800) blastIter.remove();
        if(zombie.overlaps(blast)) zombieIter.remove();

    } 
}