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());
检查它。
我正在创建一个 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());
检查它。