在我的遊戲中,我希望能夠收集硬幣。我有一枚硬幣的精靈陣列,這樣我就可以分別畫出多個硬幣。這些硬幣也隨着背景移動(模仿汽車駕駛),我想要它,所以當硬幣撞到汽車時,它會消失並被收集起來。 謝謝你的幫助。如何從精靈的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)'去除指定位置的精靈。 –