我正在学习如何使用精灵,但我遇到了一个问题。例如,当屏幕上有一个实体(“播放器”)时,精灵工作正常,但是一旦屏幕上有多个实体(玩家生物射击,创建多个子弹实体并共享相同的不同精灵),玩家就会消失。事实上,当我添加另一个精灵(“Box”)时,当玩家开始射击时,该实体也消失了。
这是精灵的设置方式。请指出可能导致失踪的任何事情。
每个实体都有一个SpriteManager类,其ArrayList为Sprite(不是LibGDX)。通过调用getCurrentSprite()然后渲染它来为sprite设置动画。 初始化每个实体时,您将Sprite类添加到EntityManager类,以便在移动或静止时可以在它们之间切换。以前我从其他地方定义的静态对象中选择了实体使用的Sprite,但我认为引用同一个对象会造成麻烦,比如屏幕上的多个项目符号使用相同的对象,所以我让它创建了一个全新的对象时间。一旦发生这种情况,子弹本身就会在射击后5秒内消失。
编辑:射击一颗子弹不会让玩家消失,但一次射击两颗子弹。只要一个子弹离开屏幕并从ArrayList中移除(它不再“存在”),播放器就会弹回。基本上,只有一颗子弹可以与玩家共存。是否有可能任何第二或更多的子弹可以以某种奇怪的方式“覆盖”玩家?我查过了;播放器保留在ArrayList中,渲染其精灵的函数也在工作。