在我的游戏中,我希望能够收集硬币。我有一个该硬币精灵的arrayList,这样我就可以分别绘制多个硬币。这些硬币也随着背景移动(模仿汽车驾驶),我想要它,所以当硬币撞到汽车时,它会消失并被收集。 谢谢你的帮助。
答案 0 :(得分:1)
您可以使用getBoundingRectangle()
的{{1}}方法并检查是否存在并与其他矩形发生冲突,如果是,则可以从coinList中删除该硬币。
Sprite
修改强>
您可以使用ArrayList<Sprite> coinList;
Sprite car;
@Override
public void create() {
coinList=new ArrayList<>();
car=new Sprite();
coinList.add(new Sprite());
}
@Override
public void render() {
//Gdx.gl....
spriteBatch.begin();
for (Sprite coin:coinList)
coin.draw(spriteBatch);
spriteBatch.end();
for(Sprite coin:coinList)
if(car.getBoundingRectangle().overlaps(coin.getBoundingRectangle())) {
coinList.remove(coin);
break;
}
}
来阻止Iterator
ConcurrentModificationException
你可以使用for (Iterator<Sprite> iterator = coinList.iterator(); iterator.hasNext();) {
Sprite coin = iterator.next();
if (car.getBoundingRectangle().overlaps(coin.getBoundingRectangle())) {
// Remove the current element from the iterator and the list.
iterator.remove();
}
}
代替Array
,libGDX中有一堆classes,它们经过优化,可以尽可能地避免垃圾收集,同时还有很多好处。
你应该尽可能地尝试使用libGDX类。