0

我对 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
4

1 回答 1

0

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

所以额外的电源打开时需要有一个部分,记录开始时间。然后在使用电源时,需要进行时间检查以确定电源是否仍然有效。

首先,让我们将该数字移动到一个可变常数中,因此如果您决定使其更长/更短,则只需进行一次更改。

TIME_MEGA_JUMP = 5000  # milliseconds of power-up

当玩家点击加电项目时,只需记录时间。注意: self.player.mega_jump_time应该0在你的播放器类中初始化,否则跳转测试会导致错误,因为变量还不存在。

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

然后当玩家跳跃时,测试时间,看看加电是否仍然有效:

...
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
于 2020-02-23T21:34:01.720 回答