如何在pygame中为玩家的武器设置一个重新装载计时器?

2024-04-29 22:23:05 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我做了一个自上而下的射手,左击射击,右击重新装弹。我想让它这样的球员不能射击时,重新加载,我不希望屏幕显示,球员有充分的弹药,直到他们完全重新加载(就像任何fps游戏)。有人知道我该怎么做吗?感谢您的反馈:)

这是我的鼠标/启动代码:

if event.type == pygame.MOUSEBUTTONDOWN and pygame.mouse.get_pressed() == (1, 0, 0) and ammo > 0:
    ammo -= 1
    bullet = Bullet()
    all_sprites_list.add(bullet)
    bullet_list.add(bullet)
elif event.type == pygame.MOUSEBUTTONDOWN and pygame.mouse.get_pressed() == (0, 0, 1):
    pygame.time.wait(1000)
    ammo = full_ammo

所以我知道pygame.time.wait(1000)冻结了整个程序整整一秒钟,我让它在那里以为它会延迟设置ammo = full_ammo,但它暂停了整个游戏哈哈。有没有人知道一个函数或pygame.任何我可以用来延迟将弹药设置为满的函数(模拟重新装载时间)?在


Tags: andeventadd游戏gettypepygamelist
1条回答
网友
1楼 · 发布于 2024-04-29 22:23:05

您需要添加一个变量来跟踪当前是否正在重新加载以及上次重新加载的时间。看起来有点像这样:

elif event.type == pygame.MOUSEBUTTONDOWN and pygame.mouse.get_pressed() == (0, 0, 1):
    lastReloadTime = time.clock()
    reloading = True
    ammo = full_ammo

(请记住,您需要import time

然后,你需要更新你的射击代码来添加一个条件,看看你是否正在重新加载。在

^{pr2}$

最后,您需要添加一些代码,看看是否完成了重新加载。这应该在事件处理之外。在

if reloading and time.clock() - lastReloadTime > TIME_TO_RELOAD: #1000
    reloading = False

我强烈建议将1000放入一个变量中(命名为TIME_TO_RELOAD或任何你想要的),这将使微调和调整游戏常量变得更容易。在

相关问题 更多 >