我实际上正在用pygame创建我的第一个游戏,但是遇到一个问题: 当我按住2按钮时,一切工作正常,但是一旦我释放其中一个按钮,即使我一直按住另一个按钮,pygame.event.get()也会返回一个空列表。 由于这个问题,我的角色无法前进。 寻求帮助!
使用python Windows 10和pygame 1.9.6
def move_right(self):
self.speedx += 3
self.sprite = "stand_r"
def move_left(self):
self.speedx -= 3
self.sprite = "stand_l"
def speed_effect(self):
self.posx += self.speedx
self.posy -= self.speedy
#speed limitation :
if self.speedx > 10 :
self.speedx = 10
if self.speedx < -10 :
self.speedx = -10
pygame.key.set_repeat(100,30)
pygame.time.Clock().tick(30)
for event in pygame.event.get():
keys = pygame.key.get_pressed()
if event.type == QUIT:
continuer = 0
if event.type == KEYDOWN:
if keys[pygame.K_d] or event.key == K_d:
character.move_right()
if keys[pygame.K_a] or event.key == K_a:
character.move_left()
#jump
if character.grounded :
if keys[pygame.K_SPACE]:
character.speedy = 30
pygame.event.get()释放一个按钮后返回一个空列表。
答案 0 :(得分:0)
仅当事件发生时才执行事件循环。按下按钮时和按下按钮时均发生事件。按住按钮时不会发生任何事件,并且不会执行事件循环。
鼠标的移动将是一个事件,导致事件循环被执行。
在主循环(事件循环外部)中使用pygame.key.get_pressed()
,以随时获取键的状态并执行character
的移动。调用pygame.key.get_pressed()
时,由pygame.event.get()
给出的状态将被同步。
for event in pygame.event.get():
keys = pygame.key.get_pressed()
if event.type == QUIT:
continuer = 0
if event.type == KEYDOWN:
if character.grounded :
if event.key == pygame.K_SPACE:
character.speedy = 30
keys = pygame.key.get_pressed()
if keys[pygame.K_d]:
character.move_right()
if keys[pygame.K_a]:
character.move_left()