在我的小游戏中,我试图通过碰撞来识别和删除一个实体,然后生成一个新实体。我无法更改两个数组列表“removeList”和“entities”,因为冲突代码看起来像是两个单独的列表。我已经对其进行了错误测试,以查看实体是否确实发生碰撞并通知计算机并且工作正常。
这是我的目标碰撞代码:
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,所以任何提示都会很棒。