如何为 pygame 中的特定项目设置计时器

How to set a timer for a specific item in pygame

我对 pygame 和 python 非常缺乏经验。我正在观看有关使用 pygame 制作平台游戏的 youtube 教程。除一件事外,一切都按预期工作..

我想暂时增加我的角色的跳跃高度,但我只是没有让它按照我想要的方式工作。我能够增加跳跃高度,但不幸的是,这不仅是暂时的,而且直到结束 运行。就像我说的,我非常非常缺乏经验,如果有人能告诉我解决问题的方法,我会很高兴

上半部分 (boost & mega_boost) 按计划工作。每当玩家角色击中它们时,角色都会向上发射几秒钟。但是"super_jump"不应该让角色腾空,只能增加跳跃高度,比如正常的跳跃高度是“20”,我想增加到“40”持续5秒。

有人告诉我我的时间检查器在启动功能中,我应该把它放在别的地方,但我不知道该放在哪里。如果有人能帮助我,我将不胜感激 这是代码的一部分:

if pow.type == "super_jump":
                self.player.mega_jump_status = 1
                now = pg.time.get_ticks()
                if now - self.player.last_update > 5000:
                    self.player.mega_jump_status = 0

这类事情通常分为两个阶段。第一个是启用上电时。该模型允许通电 一些 时间,从您的问题代码看起来像 5000ms。

所以在外接电源开启的时候需要有一段记录启动时间。然后当电源被使用时,需要时间检查来确定电源是否仍然有效。

首先,让我们将该数字移动到常量变量中,因此如果您决定将其设为 longer/shorter,则只需进行一次更改。

TIME_MEGA_JUMP = 5000  # milliseconds of power-up

当玩家击中道具时,只需记录时间。注意:self.player.mega_jump_time应该在你的播放器class中初始化为0,否则跳转测试会出错,因为变量还不存在。

if ( <power-up test condition> ):
    player.mega_jump_time = pygame.time.get_ticks()

然后当玩家跳跃的时候,测试时间看power-up是否还在生效:

...
elif ( event.type == pygame.KEYUP ):
    time_now = pygame.time.get_ticks()
    ...       
    elif ( keys[pygame.K_SPACE] ):            # Jump
        # Is the player still mega_jumping
        if ( player.mega_jump_time + TIME_MEGA_JUMP > time_now ):
            # TODO: code Me-me-mega-jump
            pass
        else:
            # TODO: code for normal jump
           pass