[英]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.