[英]How to make a delay in a keypress in pygame?
我正在制作一个平台游戏,并制作一个简单的重力版本,所以我需要这样做,以便在2秒钟左右的时间跳动(空格键)时重新打开重力。 基本上,“ ychange”每帧更改字符的y轴位置(如果ychange = 3,则每帧下降3个像素)。 始终将其设置为6,因此他每帧跌落6帧,直到他撞到有碰撞的物体为止,以使他的跳变设置为-6或-7,这使他每帧提高6或7像素。
我的问题是,我如何才能延迟从ychange = -6到ychange = 6的跳转
例如:
跳跃时:ychange = -6延迟2-3秒ychange = 6
我显然已经尝试过time.sleep和pygame.time.wait,但是他们实际上暂停了程序,直到等待结束,这显然是不好的。
跳转的代码是:
while not gameExit:
for event in pygame.event.get(): # Binds
if event.type == pygame.QUIT:
pygame.quit()
quit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
xchange -= 3
if event.key == pygame.K_d:
xchange += 3
if event.key == pygame.K_SPACE: # SPACEBAR/JUMP
ychange = -6
time.sleep(2)
ychange = 6
if event.type == pygame.KEYUP:
if event.key == pygame.K_a or event.key == pygame.K_d:
xchange = 0
它们“如果event.key == pygame.K_SPACE”是跳转部分,其余则是其他绑定。
这就是time.sleep命令的示例,该命令将暂停整个程序,直到延迟完成。
有任何想法吗?
重述:
问题:延迟会暂停程序
尝试过:time.sleep,pygame.time.wait
问题:如何获得不会使整个程序暂停的延迟
使用pygame.time.get_ticks()
获取玩家按下空格的时间,然后将布尔标志设置为true。 然后将时间获取一帧,直到从原始时间经过2秒为止,此时将ychange设置为6并将标志再次设置为false。
或者,如注释之一所示查找线程。
伪代码:
flag = False; # do this before the game loop starts
if event.type == pygame.KEYUP:
# checking flag prevents resetting the timer
if flag == False and event.key == pygame.K_w:
starttime = pygame.time.get_ticks()
ychange = -6
flag = True
# wait 2000 milliseconds before executing this
if flag == True and pygame.time.get_ticks() - starttime >= 2000:
ychange = 6
flag = False
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.