Pygame中按下按键移动玩家时精灵出现重复显示的原因是什么
问题原因
玩家精灵移动时出现重复显示(拖影)的核心原因是每帧绘制新的玩家精灵前,没有清空上一帧在屏幕上绘制的旧内容。
Pygame的屏幕画布(screen Surface)不会主动清除上一轮循环留下的绘制内容,你每次在主循环里调用screen.blit(player, (10, player_movement))时,只是把新位置的玩家画在已有内容的上层,上一帧的旧玩家图像还保留在原位置,多次绘制后就会出现多个重复的玩家精灵。
修复方案
在主循环里绘制玩家之前,添加清空屏幕的代码,用统一的背景色覆盖上一帧的所有内容即可。
修改后的主循环代码如下:
#main loop while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: player_movement -= 5 if event.key == pygame.K_DOWN: player_movement += 5 # 新增:填充背景色清空上一帧内容,RGB值可自定义 screen.fill((0, 0, 0)) screen.blit(player, (10, player_movement)) pygame.display.update() clock.tick(60)
如果你的游戏有背景图,也可以在这个位置绘制全屏背景图来覆盖上一帧内容,效果和填充纯色一致。
内容的提问来源于stack exchange,提问作者Migs Panganiban
相关产品推荐
相关产品推荐

