如何解决Pygame加载精灵后仅显示背景不显示角色的问题
问题根因
你的redrawGameWindow函数存在缩进逻辑错误:角色绘制代码全部被包含在if walkCount + 1 >= 24:的条件块内,仅当walkCount即将溢出重置时才会执行一次绘制,绝大多数帧都不会渲染角色,这是看不到精灵的核心原因。
修复方案
将绘制逻辑的缩进向外调整一层,修正后的函数代码如下:
def redrawGameWindow(): # We have 8 images for our walking animation, I want to show the same image for 3 frames # so I use the number 16 as an upper bound for walkCount because 24 / 3 = 8. 8 images shown # 3 times each animation. global walkCount win.blit(bg, (0, 0)) # Draws the background image at (0,0) if walkCount + 1 >= 24: walkCount = 0 # 绘制逻辑提到walkCount判断的外层 if left: win.blit(walkLeft[walkCount//3], (x, y)) walkCount += 1 elif right: win.blit(walkRight[walkCount//3], (x, y)) walkCount += 1 else: win.blit(char, (x, y)) walkCount = 0 pygame.display.update()
其他可选排查点
如果修改后仍未解决问题,可以依次检查以下项:
- 确认
x、y坐标未超出窗口显示范围:可以临时打印坐标值和窗口分辨率对比,避免精灵被绘制到可视区域外 - 确认精灵资源加载正常:在资源加载代码后增加
print(char.get_size()),如果运行时报错说明图片路径存在问题 - 确认
left、right变量的状态:如果两个变量同时为True,会进入无绘制的分支,初始状态下两者都为False时应该默认渲染站立精灵
内容的提问来源于stack exchange,提问作者Joseph
相关产品推荐
相关产品推荐

