Pygame 精灵计时器

Pygame sprites timer

我需要制作一个精灵列表,每个精灵都应该有某种计时器,这样它就可以自己执行一个动作(例如每 10 秒射击一次)。但是它们会在不同的时间创建和添加新的,所以它们每个都应该有自己的计时器。 我知道如何制作精灵列表,但我不知道如何为每个精灵附加一个计时器或类似的东西。 有人可以帮助我吗?

您可以将计时器添加为精灵的属性:

class Sprite:
    def __init__(self, ...):
        self.timer = pygame.Clock()
        # ...
    # ...

或者(确保没有成员已经呼叫timer):

for sprite in sprites:
    sprite.timer = pygame.Clock()

或者您可以将列表更改为包含精灵和计时器的元组列表:

sprites = [(sprite, pygame.Clock()) for sprite in sprites]

这将生成一个格式如下的列表:

[(sprite, timer), (sprite, timer), ...]

然后您可以访问精灵和计时器:

sprite = sprites[0][0]  # first sprite
timer = sprites[0][1]  # first timer

或:

sprite, timer = sprites[0]  # first pair

您还可以拥有 {sprite: timer} 的字典,然后使用 sprite_to_timer[sprite].

访问精灵的计时器

注意:将 pygame.Clock 替换为您要使用的定时器