2013-06-20 60 views
-1

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

这是我的目标冲突代码:

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方法来进行错误测试。

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

+0

这将是很好知道为什么有人向下投这个。 – Capitals

回答

0

这是解决,因为我需要使类构造函数链接回游戏类。

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

这是不是...

game = new Game(); 
相关问题