Pygame代码运行时玩家无法停止移动,请帮忙排查代码错误
Pygame玩家角色无法停止移动问题修复方案
你的代码存在缩进逻辑错误,KEYUP事件的判断被错误嵌套在KEYDOWN事件的判断分支内,导致松开按键的触发逻辑永远不会执行,角色就会保持移动速度无法停止。
错误代码片段(问题点标注)
if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: playerX_change = -0.1 if event.key == pygame.K_RIGHT: playerX_change = 0.1 # 问题:KEYUP判断缩进错误,只有当前事件为KEYDOWN时才会执行该判断,不可能满足event.type == pygame.KEYUP的条件 if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: playerX_change = 0
修正后代码
将KEYUP的判断调整到和KEYDOWN平级的位置即可:
if event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: playerX_change = -0.1 if event.key == pygame.K_RIGHT: playerX_change = 0.1 # 调整缩进,和KEYDOWN判断平级,独立响应KEYUP事件 if event.type == pygame.KEYUP: if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT: playerX_change = 0
原因说明
Pygame的事件队列中,按键按下(KEYDOWN)和按键松开(KEYUP)是两个完全独立的事件类型。当你松开按键触发KEYUP事件时,不会进入上层if event.type == pygame.KEYDOWN的分支,所以原本设置移动速度为0的逻辑永远不会被触发,角色就会保持之前的移动速度持续移动。
内容的提问来源于stack exchange,提问作者Beetechy
相关产品推荐
相关产品推荐

