检测对象和来自 ArrayList 的对象是否发生碰撞

Detecting If Object and Object From ArrayList Collide

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

因为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));