我从来没有找到关于如何在pygame中创建定时事件的明确答案,
我想创建一个具有持续时间和冷却时间的定时动作。 (在本示例中,分别为1和2)。 类似于游戏中的逃避或冲刺技能
我已经编辑了代码,并且:
dash_now = 0
dash_cooldown = 2
if dash:
while dash_now < 2 and dash_cooldown >= 0:
dash_now +- clock.tick(60) / 1000
player.dash()
firing == False
else:
dash = not dash
dash_now == 0
dash_cooldown == 3
dash_cooldown +- clock.tick(60) / 1000
到目前为止还不能正常工作...我肯定是在犯一个愚蠢的错误,我看不到它是什么。
答案 0 :(得分:2)
实际上非常简单:
假设您有一个计时器变量
timer = 0
此后,在每次迭代中,您添加自上一帧以来经过的时间:
timer += my_clock.tick(60) / 1000
最后,在代码的后面,您可以检查它是否满足特定阈值。
if timer >= 2:
# Insert whatever you want
timer = 0
因此,只要您不希望整个运动陷入循环,就可以像这样大大简化代码。
self.dash_delay = 0
self.is_dashing = 0
def dash(self):
if dash_delay < 0 and self.is_dashing < 2:
self.rect.x += self.speedx * 2
self.rect.y += self.speedy * 2
self.is_dashing +- clock.tick(60) / 1000
elif self.is_dashing > 2:
self.dash_delay = 3
self.is_dashing = 0
self.dash_delay -= clock.tick(60) / 1000