我正在创建我的第一个游戏。我正在使用Python和PyGame。到目前为止,一切进展顺利,但是我遇到了一个似乎无法解决的问题:
只要按下按钮,我就希望角色进行一定的动作。通常,当您想让角色移动时,我会
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
这样,角色在按空格键时会执行某些操作,但是如果您按住空格键则只会执行一次。我以为我会这样做
if event.type == pygame.KEYDOWN:
while event.key = pygame.K_SPACE
但是,当我运行此程序并按空格键时,程序将阻塞,并且我得到“程序没有反应”的东西。
所以,最后一次。我希望角色在拥有空间时能够做些什么,而当我放手时,我希望角色回到原来的状态。例如:默认情况下,我的角色正在行走。当我拥有空间时,我希望它能在我拥有空间的时间内爬行。最后,一旦我放开空间,我希望它能恢复正常的行走。
这可能吗?
接收事件时,spacePressed
如果SPACE按下,则设置状态()KEYDOWN
。如果SPACE释放并KEYUP
接收到该字符,请重置状态并保留该字符的位置。spacePressed
在主应用程序循环中移动依赖的字符,例如:
spacePressed = False
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
spacePressed = True
if event.type == pygame.KEYUP:
if event.key == pygame.K_SPACE:
spacePressed = False
# reset character
# [...]
if spacePressed:
# move character
# [...]
另一个选择是用于pygame.key.get_pressed()
在主应用程序循环中获取按下的键,并在KEYUP
收到事件时重置字符的位置:
while run:
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYUP:
if event.key == pygame.K_SPACE:
# reset character
# [...]
keys = pygame.key.get_pressed()
if keys[pygame.K_SPACE]:
# move character
# [...]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句