所以我正在做一个自上而下的射击游戏,左击点击,右键点击重新加载枪。我想制作它让玩家在重新加载时无法拍摄,我不希望屏幕显示玩家有完全弹药直到他们完全重装后(就像任何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.
我可以使用什么函数来延迟将弹药设置为完全(模拟重载时间)?
答案 0 :(得分:2)
您想添加一个变量,用于跟踪您当前是否正在重新加载以及上次重新加载的时间。看起来有点像这样:
elif event.type == pygame.MOUSEBUTTONDOWN and pygame.mouse.get_pressed() == (0, 0, 1):
lastReloadTime = time.clock()
reloading = True
ammo = full_ammo
(请记住,您需要import time
)
然后,您需要更新拍摄代码以添加条件,以确定您是否正在重新加载。
if not reloading and 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)
然后,最后,你需要添加一些代码,看看你是否完成了重装。这应该在您的事件处理之外。
if reloading and time.clock() - lastReloadTime > TIME_TO_RELOAD: #1000
reloading = False
我强烈建议将1000放入一个变量(名为TIME_TO_RELOAD
或任何你想要的)中,这样可以更容易地微调和调整游戏常数。