Pygame如何实现仅按住按键时触发功能 空格按下恐龙下蹲松开恢复
问题原因
当前代码仅在检测到空格键按下时修改恐龙状态为下蹲,没有补充松开空格键后的状态重置逻辑,导致dino_duck状态一直为True,恐龙无法恢复奔跑姿态。
修改方案
修改Dino类的update方法中按键判断的逻辑,独立处理空格键的按下/松开状态,松开时自动切回奔跑状态,修改后的核心代码如下:
def update(self, userInput): if self.dino_run: self.run() if self.dino_duck: self.duck() if self.step_index >= 10: self.step_index = 0 if userInput[pygame.K_UP]: self.dino_run = True self.dino_duck = False self.Y_POS = 100 self.Y_POS_DUCK = 130 elif userInput[pygame.K_DOWN]: self.dino_run = True self.dino_duck = False self.Y_POS = 400 self.Y_POS_DUCK = 430 # 独立处理空格下蹲逻辑 if userInput[pygame.K_SPACE]: self.dino_run = False self.dino_duck = True # 松开空格且无其他按键操作时自动恢复奔跑 elif not userInput[pygame.K_UP] and not userInput[pygame.K_DOWN]: self.dino_run = True self.dino_duck = False
逻辑说明
- 把空格键判断从原来的
elif分支独立出来,避免被上下键的判断逻辑截断 - 新增松开空格的分支判断,只要没有主动按上下键操作,就自动把恐龙状态切回奔跑
- 原有上下键对应的跳跃、下落逻辑完全保留,不受改动影响
内容的提问来源于stack exchange,提问作者LR429
相关产品推荐
相关产品推荐

