为什么我不能从我的实体类中更改ArrayList?

时间:2013-06-20 15:17:50

标签: java arraylist entity lwjgl

在我的小游戏中,我试图通过碰撞识别并删除实体,然后生成一个新实体。我无法更改两个数组列表“removeList”和“entities”,因为碰撞代码看起来像是两个单独的列表。我有bug测试它,看看实体是否确实碰撞并通知计算机,并且工作正常。

这是我的目标碰撞代码:

public void collidedWith(Entity other) {
    game = new Game();
    if (used) {
    return;
    }
    if (other instanceof PlayerEntity) {
    game.removeEntity(this);
    game.spawnTarget();//This does work as I call it earlier in the code

    used = true;
    }
}

这是游戏循环碰撞代码,它带来了目标碰撞代码:

for (int p = 0; p < entities.size(); p++) {
        for (int s = p + 1; s < entities.size(); s++) {
        Entity me = entities.get(p);
        Entity him = entities.get(s);

        if (me.collidesWith(him)) {
        me.collidedWith(him);
        him.collidedWith(me);
        }
        }
    }

这是删除实体代码:

public void removeEntity(Entity entity) {
    removeList.add(entity);
    entities.removeAll(removeList);
    removeList.clear();
    }

只需注意:我知道我可以在不需要removeList的情况下删除实体但是我想将主代码实现到gameLoop中,这是它最初启动的地方。我将它移到removeEntity方法进行bug测试。

我刚刚开始使用Entities和LWJGL,所以任何提示都会很棒。

1 个答案:

答案 0 :(得分:0)

这已经解决了,因为我需要让类构造函数链接回游戏类。

protected TargetEntity(Game game, int x, int y) {
        super(x, y, 10, 10);
        this.game = game;
    }

这不是......

game = new Game();