如何为 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
这类事情通常分为两个阶段。第一个是启用上电时。该模型允许通电 一些 时间,从您的问题代码看起来像 5000
ms。
所以在外接电源开启的时候需要有一段记录启动时间。然后当电源被使用时,需要时间检查来确定电源是否仍然有效。
首先,让我们将该数字移动到常量变量中,因此如果您决定将其设为 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
我对 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
这类事情通常分为两个阶段。第一个是启用上电时。该模型允许通电 一些 时间,从您的问题代码看起来像 5000
ms。
所以在外接电源开启的时候需要有一段记录启动时间。然后当电源被使用时,需要时间检查来确定电源是否仍然有效。
首先,让我们将该数字移动到常量变量中,因此如果您决定将其设为 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