我正在尝试制作一个动画,当我的球员被击中时,让它看起来像是在倒地。在
我尝试了下面的代码,但似乎不起作用。它减慢了帧的速度,只显示我动画的最后一个图像在pygame中有没有更简单的动画方式?在
if player2_hit_sequence == True:
stage1 = True
if stage1 == True:
game_display.blit(dying1_p2, (player2X, player2Y))
time.sleep(0.2)
stage1 = False
stage2 = True
if stage2 == True:
game_display.blit(dying2_p2, (player2X, player2Y))
time.sleep(0.2)
stage2 = False
stage3 = True
if stage3 == True:
game_display.blit(dying3_p2, (player2X, player2Y))
time.sleep(0.2)
有没有一个函数可以生成一系列图像或类似的东西?在
对于动画,你需要一堆图像和一个计时器。在
我将展示一些基于pygame精灵的代码片段。也许这并不完全符合这个问题,但它似乎是一个比手动绘制/blitting图像更好的解决方案。在
首先,代码从一个sprite类开始:
所以我们的想法是外星精灵有一个“正常”的图像,但是当它“扭曲”(传送)时,就会播放动画。实现的方法是有一个动画图像列表。动画开始时,精灵的
^{pr2}$image
将从base_image
更改为warp_images[]
中的第一个。随着时间的推移,精灵图像会更改为下一帧,然后是下一帧,最后恢复为基础图像。通过将所有这些嵌入到spriteupdate()
函数中,sprite的正常更新机制处理外来精灵的当前“状态”,normal或“warp”。一旦“warp”状态被触发,它将运行而不需要任何额外的pygame主循环的参与。在所以首先要注意的是,
update()
使用时钟来知道动画开始后经过的毫秒数。为了跟踪时间,我通常在游戏循环中设置一个全局NOW_MS
。在在精灵中,我们有3帧动画,每帧之间有200毫秒。要启动精灵动画,只需调用
startWarp()
,这显然只是启动计时器。在显然,所有那些帧计时&what not应该是sprite类的成员变量,但是我没有这样做以保持示例的简单性。在
相关问题 更多 >
编程相关推荐