pygame如何创建包含另一个组的父精灵组

时间:2017-05-25 12:58:40

标签: python pygame

所以我在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的文本),但我相信我的例子已经足够了。

1 个答案:

答案 0 :(得分:0)

如果他们不在区域中,请不要从精灵组中删除怪物,而是在他们的update方法中添加一个条件语句,以确保它们仅在距离到达时才更新玩家低于期望的阈值,例如:

def update(self):
    if distance_to_player < 150:
        # Rest of the update code ...

您可能需要在mob实例中存储对玩家的引用来计算距离。