所以最近我一直在用pygame开展一个项目,我开始研究你可以控制的角色。玩家可以使用箭头键移动,但在没有按下按键时无法停止。我对pygame的解决方案是测试用户是不是向左,向右,向上或向下按,然后玩家速度将变为零。但由于某种原因,当我没有按下按键时,玩家的速度仍然没有停止。我想知道我的if语句有什么问题。感谢您阅读本文并提供帮助!
if语句代码是这样的:
if event.key != K_LEFT and event.key != K_RIGHT and event.key != K_DOWN and event.key != K_UP:
playerSpeed = 0
这是movment的完整代码:
#Keypress-player movement
elif event.type == KEYDOWN:
if event.key != K_LEFT and event.key != K_RIGHT and event.key != K_DOWN and event.key != K_UP:
playerSpeed = 0
if event.key == K_LEFT:
direction = LEFT
playerSpeed = .2
elif event.key == K_RIGHT:
direction = RIGHT
playerSpeed = .2
elif event.key == K_DOWN:
direction = DOWN
playerSpeed = .2
elif event.key == K_UP:
playerSpeed = .2
direction = UP
if direction == UP:
if canMoveUp == 'true':
newPlayer = {'x':coords[0]['x'], 'y':coords[0]['y']-playerSpeed}
elif direction == DOWN:
if canMoveDown == 'true':
newPlayer = {'x':coords[0]['x'], 'y':coords[0]['y']+playerSpeed}
elif direction == LEFT:
if canMoveLeft == 'true':
newPlayer = {'x':coords[0]['x']-playerSpeed, 'y':coords[0]['y']}
elif direction == RIGHT:
if canMoveRight == 'true':
newPlayer = {'x':coords[0]['x']+playerSpeed, 'y':coords[0]['y']}
答案 0 :(得分:1)
您需要彻底重新思考自己的方法。有两种很好的方法可以进行基于密钥的输入。
1)为每个键设置一个标志,将其设置为KEYDOWN,并在KEYUP上取消设置。
2)使用Pygame提供的当前按下的密钥字典。
然后你可以说“if keys [”UP“]:”。这允许您一次使用多个键,并使逻辑更简单。