Pygame - 运行 3 秒事件仅一次

Pygame - Run event for 3 seconds only once

我是 PyGame 的新手,我正在创建一个 space 射击游戏。这个游戏的一部分是加电,当玩家拿起特定的加电时,我希望玩家在 3 秒内不能射击。鼠标点击即可完成拍摄

我可以拿起道具,我知道玩家最后拿起的是什么道具,但我正在为这个事件而苦苦挣扎。我的想法是:

  1. 拾取无法射击的道具 -> 完成
  2. 阻止鼠标按钮
  3. 等待3秒,剩下的游戏还在运行
  4. 解锁鼠标按钮。

我知道 Python 函数(例如 wait)没有帮助。

有ideas/suggestions吗? 谢谢

当您调用 clock.tick() 时,距上次调用已 returns 次。所以节省时间:dt = clock.tick() 然后使用该变量倒计时。

示例:

dt = clock.tick() # only call once per iteration
if attack_blocked:
    attack_block_count += dt
    if attack_block_count >= 3000: # dt is in ms
        attack_blocked = False

示例 2:

while True:
    dt = clock.tick(60)
    for event....
        if block_attack_power_up:
            attack_blocked = True
            attack_block_count = 0
    if not attack_blocked:
        # do your attack
    if attack_blocked:
        attack_block_count += dt
        if attack_block_count >= 3000:
            attack_blocked = False