在我的小游戏中,我试图通过碰撞识别并删除实体,然后生成一个新实体。我无法更改两个数组列表“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,所以任何提示都会很棒。
答案 0 :(得分:0)
这已经解决了,因为我需要让类构造函数链接回游戏类。
protected TargetEntity(Game game, int x, int y) {
super(x, y, 10, 10);
this.game = game;
}
这不是......
game = new Game();