-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,所以任何提示都会很棒。
这将是很好知道为什么有人向下投这个。 – Capitals