前言
在pygame游戏开发专栏中的第一篇文章(一)增量时间的利用中讲解了利用增量时间可以使玩家移动速度不受帧率的影响。
这里播放帧动画同样需要利用增量时间,将游戏的人物行为如行走、待机等动作截取若干帧,利用增量时间不同时刻显示不同的帧。
这篇文章只是说明播放角色行走、待机等动作,如果玩家使用工具的话,这篇文章的方法不能够解决。使用工具的时候,动画不能够一直播放,实现的思路是可以添加定时器,按键按下时候激活定时器,到一定时间失能定时器就可以实现,具体代码在下一篇文章中讲解。
素材准备
正常游戏角色移动需要向上、下、左、右移动,需要相应的动画,如下图所示展示了向右移动时角色的若干帧。
GIF动图如图所示
pygame中播放动画
现在需要在pygame中去播放动画,需要将不同帧截取保存,下面是素材存放示例
这里的12张图片对应上面的角色动作,现在需要用代码实现在不同时刻绘制不同的图片。
实现思路及代码讲解
初始化
def import_image(path):
"""
导入图像并转换为surface对象
:param path: 文件夹路径
:return: 返回surface列表
"""
surface_list = []
# 获取path路径下的所有文件名并转换为surface对象
for _, __, img_files in walk(path):
for image in img_files:
full_path = path + '/' + image
surface = pygame.image.load(full_path).convert_alpha()
# 调整图像大小,因为这里图形比较小,放大演示更加明显
surface_width, surface_height