如何从精灵的arrayList中删除精灵,并在精灵发生碰撞时将其从屏幕上移除?的Java / Libgdx

时间:2017-06-19 02:37:10

标签: java libgdx collision

在我的游戏中,我希望能够收集硬币。我有一个该硬币精灵的arrayList,这样我就可以分别绘制多个硬币。这些硬币也随着背景移动(模仿汽车驾驶),我想要它,所以当硬币撞到汽车时,它会消失并被收集。 谢谢你的帮助。

1 个答案:

答案 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类。