简体   繁体   English

在Pygame中按住键时如何使角色移动?

[英]How to make character move when holding down key in Pygame?

Right now, I have this: 现在,我有这个:

for event in pygame.event.get(): 
   if event.type == pygame.QUIT: 
        done = True 
    keys = pygame.key.get_pressed()
    # moves hero with key presses 
    if keys[pygame.K_LEFT] == 1:
        hero.goLeft()
    if keys[pygame.K_RIGHT] == 1:
        hero.goRight()
    elif keys[pygame.K_UP] == 1:
        hero.goUp()
    elif keys[pygame.K_DOWN] == 1:
        hero.goDown()

However, I'm still having to press the key multiple times to move the character. 但是,我仍然必须多次按该键才能移动角色。 Does anyone know why or have a different solution? 有谁知道为什么或有不同的解决方案?

Thanks! 谢谢!

keys = pygame.keys.get_pressed() and the following lines should not be inside of the event loop, otherwise it's called only once for each event that gets added to the event queue and you won't get continuous movement. keys = pygame.keys.get_pressed() ,并且以下各行不应位于事件循环内,否则对于添加到事件队列中的每个事件仅调用一次,并且不会连续移动。 Just dedent these lines. 只是使这些行弯曲。

for event in pygame.event.get():
    if event.type == pygame.QUIT:
        done = True

keys = pygame.key.get_pressed()
# moves hero with key presses
if keys[pygame.K_LEFT]:
    hero.goLeft()
elif keys[pygame.K_RIGHT]:
    hero.goRight()
if keys[pygame.K_UP]:
    hero.goUp()
elif keys[pygame.K_DOWN]:
    hero.goDown()

You can also just check if keys[pygame.K_LEFT]: instead of if keys[pygame.K_LEFT] == 1: . 您也可以只检查if keys[pygame.K_LEFT]:而不是if keys[pygame.K_LEFT] == 1:

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM