所以我在pygame中有一个包含所有sprite的all_sprites组。要做到这一点,我只是让他们在启动时加入该组。还有怪物,它们和怪物组一起在怪物组内。我使用update()函数将它们与我拥有的所有其他精灵一起更新:
self.all_sprites.update()
简单的东西。但是我想只更新玩家区域内的小怪,所以我可以简单地
self.all_sprite.add(Mob)
self.all_sprite.remove(Mob)
如果他们是或不在区域,它的简单但删除功能比空的慢得多,实际上我使用
self.walls.empty()
在每个循环之前,只需在屏幕内添加墙壁,它就像一个魅力。但是墙壁没有更新功能,所以这里出现了我的问题,我希望如果我清空我的小怪组,它会删除all_sprite组中的小怪,就像一个父组一样,如果我在小怪组中添加一个小怪,它为all_sprites添加了一个。所有这一切都没有在pygame中使用remove()函数,因为它很慢。我有办法做到这一点吗?
抱歉没有提供完整的代码,它有点大(~50 kB的文本),但我相信我的例子已经足够了。答案 0 :(得分:0)
如果他们不在区域中,请不要从精灵组中删除怪物,而是在他们的update
方法中添加一个条件语句,以确保它们仅在距离到达时才更新玩家低于期望的阈值,例如:
def update(self):
if distance_to_player < 150:
# Rest of the update code ...
您可能需要在mob实例中存储对玩家的引用来计算距离。