Java ArrayList 第一项冲突不起作用,但没有它就可以

Java ArrayList first item collision doesn't work, but without it works

我正在创建一个 ArrayList 矩形项目:

private ArrayList<Rectangle> items = new ArrayList<>();

我在 update 方法中使用 ArrayList

@Override
public void update(float delta) {

    items.add(new Rectangle(GameWorld.obstacle1.getX() - GameRenderer.generator2.getValue2(),
                GameWorld.obstacle1.getY() + GameRenderer.generator2.getValue1() , 5, 5));

        if (Intersector.overlaps(GameWorld.wizard.getBoundingRectangle(), items.get(0))) {                
            Gdx.app.exit();             
        }    
}

与物品的碰撞不起作用,因为程序在撞到物品时没有关闭。

但是当我这样做时,它工作得很好:

private Rectangle doublepoints;

doublepoints = new Rectangle(GameWorld.obstacle1.getX() - GameRenderer.generator2.getValue2(),
                GameWorld.obstacle1.getY() + GameRenderer.generator2.getValue1() , 5, 5);

@Override
public void update(float delta) {

        if (Intersector.overlaps(GameWorld.wizard.getBoundingRectangle(), doublepoints)) {                
            Gdx.app.exit();             
        }    
}

我不明白为什么后者有效,但我真的很想用 ArrayList 来做。谁能告诉我为什么?

断点(ArrayList):

断点(正常):

不确定您的其余代码,但是下面的代码不会在每个渲染更新中添加一个矩形吗? (每秒 60 个)

public void update(float delta) {

items.add(new Rectangle(GameWorld.obstacle1.getX() - GameRenderer.generator2.getValue2(),
            GameWorld.obstacle1.getY() + GameRenderer.generator2.getValue1() , 5, 5));}

问题可能与此问题有关。

使用:

System.out.println(items.size());

检查它。