【问题标题】:Detecting If Object and Object From ArrayList Collide检测 ArrayList 中的对象和对象是否碰撞
【发布时间】:2017-08-23 18:13:45
【问题描述】:

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

【问题讨论】:

  • ArrayList 的相关性如何?你为什么关心Enemy 来自哪里?您(大概)只关心它是否与Player 相交。请edit您的问题向我们展示您正在尝试做什么以及什么不起作用(minimal reproducible example)。

标签: java swing awt java-2d


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-20
    • 2015-12-04
    • 1970-01-01
    相关资源
    最近更新 更多