簡體   English   中英

恆定鍵輸入可以不斷移動精靈嗎?

[英]Can constant key input move a sprite constantly?

如果我想根據pygame中的鍵輸入來移動精靈,無論如何都要編寫代碼,因此如果我按住一個鍵,則精靈會一直朝那個方向移動,直到釋放鍵為止? 我已經嘗試過了,或者程序崩潰了,或者我不得不反復輕擊按鍵以將精靈朝預期的方向移動。

OP希望鍵狀態輪詢,而不是KEYDOWN事件。

本示例顯示了同時使用按鍵事件和按鍵輪詢。 您可以將其中一個用於“按下按鍵”,將另一個用於“按住時”。

import pygame
from pygame.locals import *

done = False    
player.pos = Rect(0,0,10,10)

while not done:
    for event in pygame.event.get():
        # any other key event input
        if event.type == QUIT:
            done = True        
        elif event.type == KEYDOWN:
            if event.key == K_ESC:
                done = True

    # get key current state
    keys = pygame.key.get_pressed()
    if keys[K_LEFT]:
        player.pos.left -= 10
    if keys[K_RIGHT]:
        player.pos.left += 10
    if keys[K_UP]:
        player.pos.top -= 10
    if keys[K_DOWN]:
        player.pos.left += 10
    if keys[K_SPACE]: 
        print 'firing gun'

作為概述,

  • 在pygame消息隊列中偵聽KEYDOWN事件。
  • 檢查您感興趣的鑰匙是否被按下。
  • 朝那個方向移動
  • 檢查消息隊列中KEYUP有與您的密鑰相匹配的KEYUP事件。
  • 別動了

閱讀有關如何實現此目的的文檔

通常在更新方法中使用具有移動功能的函數,如下所示:

this.pos_x = direction * speed * delta

現在,在KEYDOWN事件中,將方向設置為1或-1,在KEYUP事件中,將方向設置為0。這樣,您就可以保持恆定的運動。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM