在我的游戏中,我希望能够收集硬币。我有一枚硬币的精灵阵列,这样我就可以分别画出多个硬币。这些硬币也随着背景移动(模仿汽车驾驶),我想要它,所以当硬币撞到汽车时,它会消失并被收集起来。 谢谢你的帮助。如何从精灵的arrayList中移除精灵并在精灵发生碰撞时将其从精灵屏幕中移除? Java/Libgdx
2
A
回答
1
您可以使用getBoundingRectangle()
方法Sprite
并检查是否存在与其他矩形的碰撞,如果是,您可以从coinList中移除该硬币。
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
代替ArrayList
,有一堆classes内libGDX被优化,以避免垃圾收集尽可能也哈有很多好处。
您应该随时尝试使用libGDX类。
+0
您最好使用迭代器来防止将来出现ConcurrentModificationException异常,还有在libgdx中实现的Array
相关问题
- 1. Xna碰撞移动精灵
- 2. 与精灵碰撞
- 3. 移动精灵但不会与Phaser中的其他精灵碰撞
- 4. 如何让精灵从精灵表变成另一个精灵?
- 5. 从屏幕cocos2d iphone中删除精灵?
- 6. 如何检测精灵表的精灵帧的碰撞
- 7. 精灵熄灭屏幕碰撞
- 8. 两个精灵的碰撞
- 9. 的cocos2d精灵碰撞
- 10. 与UIImageView碰撞的精灵
- 11. 旋转精灵将精灵从原始位置移动
- 12. 从屏幕上删除精灵
- 13. 工作精灵碰撞
- 14. 精灵碰撞Andengine(Android)
- 15. 与另一个精灵作为父母的精灵碰撞
- 16. 如何删除与其他精灵相交的精灵cocos2d-android
- 17. 将一个精灵移动到pygame中的另一个精灵
- 18. 如何删除精灵并再次使用相同的精灵
- 19. 当精灵离开屏幕时,将精灵移动到另一侧Pygame
- 20. 如何让精灵坐在移动的精灵上
- 21. 如何将精灵函数应用于精灵组中的所有精灵?
- 22. 从精灵表
- 23. 在开罗精灵绘画的精灵
- 24. 移相器 - 用另一个精灵移动精灵
- 25. 如何从一些组件精灵表生成动画精灵
- 26. Swift如何移动精灵?
- 27. Phaser P2碰撞杀死碰撞精灵
- 28. 定时移动精灵
- 29. 精灵
- 30. 如何从精灵网格中提取单个精灵?
使用'ArrayList'函数'remove(index)'去除指定位置的精灵。 –