2 回答

TA贡献1155条经验 获得超0个赞
您不是在计算自上次以来的时差powerup。time_difference始终是游戏开始后的时间。每次要重置计时器时都需要保存滴答声,并与之进行比较。
prev_time = pygame.time.get_ticks() #initialize tick counter
while running:
clock.tick(FPS)
time_difference = pygame.time.get_ticks() - prev_time
if time_difference >= 5000:
all_sprites.add(healthpack)
prev_time = pygame.time.get_ticks() # reset counter
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
all_sprites.update()
screen.fill(BLACK)
all_sprites.draw(screen)
draw_text(screen, str(time_difference), 18, WIDTH / 2, 55)
pygame.display.flip()

TA贡献1825条经验 获得超6个赞
他对 的修复是正确的time_difference,但您的代码也存在另一个问题。
另一个问题是healthpack. 你正在这样做all_sprites.add(healthpack),这只会把旧的healthpack放回列表中all_sprites。那个精灵离开屏幕并下降。你需要一个新的实例HealthPack。所以你需要像这样修改@Barmar的解决方案:
prev_time = pygame.time.get_ticks() #initialize tick counter
while running:
clock.tick(FPS)
time_difference = pygame.time.get_ticks() - prev_time
if time_difference >= 5000:
healthpack = HealthPack() # <----------------- add this line
all_sprites.add(healthpack)
prev_time = pygame.time.get_ticks() # reset counter
添加回答
举报