检测ArrayList中的对象和对象是否碰撞

时间:2017-03-30 02:20:49

标签: java swing awt java-2d

我正在为java迷你游戏编写程序。我需要确定两个物体是否发生碰撞。其中一个对象只是类型为Player(一个单个对象),名称为player,另一个是对象类型为Enemy的arrayList的一部分,其arrayList的名称为enemies。我知道我可以使用intersect()函数,因为它们都扩展了Rectangle。但是,我想知道这个陈述的语法究竟是什么?即 - player.intersect(enemies)。但是,这似乎不正确?

1 个答案:

答案 0 :(得分:3)

由于enemies是一个列表,因此您无法直接在列表中调用intersect。你可以做的是循环列表:

static boolean anyEnemyCollides(Player player, List<Enemy> enemies) {
    for  (Enemy enemy : enemies) {
        if  (player.intersect(enemy)) {
            return true;
        }
    }
    return false;
}

修改

我还要提一下,如果你正在使用番石榴,你可以这样做:

Iterables.any(enemies, (enemy) -> player.intersect(enemy));