3

問題:

これが何度も求められていることは知っていますが、良い答えが見つかりませんでした。
ゲーム用のエンティティがいくつかありますが、衝突をチェックする最良の方法は何ですか?

リンク:

ゲーム(終了)

コードの説明:
ワールド クラスのエンティティのリストがあります。

List<Entity> entities = new ArrayList<Entity>();
// The list in the World class

このコードでそれらを更新します(ビュー範囲内の場合のみ):

public void update(GameContainer gc, int delta) {
    for (int i = 0; i < entities.size(); i++) {
        entities.get(i).update(gc, delta);
    }
}
// Update entities

だから今私はエンティティ更新メソッド内の衝突をチェックしたい.

更新方法としてこれを試しました:

@Override
public void update(GameContainer gc, int delta) {
    for (Entity entity : world.entities) {
        if (intersects(entity)) {
           // world.remove(this);
        }
    }
}
// The update method of an entitiy

そして、これは現在の交差メソッドです:

public boolean intersects(Entity entity) {
    if (entity instanceof Player) {
        // Do nothing
    } else {
        if (shape != null) {
            return this.getShape().intersects(entity.getShape());
        }
    }

    return false;
}
// The intersects method of the abstract Entity class

現在、intersects メソッドは常に true を返します。しかし、なぜ?

4

1 に答える 1