用按键控制精灵动画

时间:2018-10-09 19:41:20

标签: image animation pygame sprite-sheet

我一直在从事拳击游戏。在花了数小时创建精灵表之后,我现在在游戏中使用它时遇到了麻烦。动画加载正常,但我似乎找不到控制它们的好方法。我只想让sprite_sheet的每一行循环一次,但是使用此代码,打孔器会一直循环播放,直到释放键为止。

left_jab = False

for event in pygame.event.get():

   if event.type == pygame.QUIT:
       quit()

   elif event.type == pygame.KEYDOWN:

       if event.key == pygame.K_UP:
           left_jab = True

   elif event.type == pygame.KEYUP:

       if event.key == pygame.K_UP:
           left_jab = False

   if left_jab:
        player.update(dt)
        player.render_left_jab(gameDisplay)

这是播放器类的一部分:

    def update(self, dt):

    self.current_time += dt

    if self.current_time >= self.animation_time:
        self.current_time = 0

        if self.current_image >= self.numImages - 1:
            self.current_image = 0

        else:
            self.current_image += 1

有更简单的方法吗? 我的精灵表中每行有8张图像。仅仅是使用更多图像来创建更流畅的动画吗?

1 个答案:

答案 0 :(得分:1)

考虑动画(或打孔)需要多长时间,如果时间到了,请再次将left_jab设置为False

一种非常简单的方法是将您的代码更改为:

if self.current_image >= self.numImages - 1:
    self.current_image = 0
    left_jab = False

所以一旦动画循环一次,我们就停止它。

当然,这不是最终的解决方案,但是您会明白的。您没有显示完整的代码,但是我建议将属于玩家/拳击手实体的所有逻辑移到其类中(检查按键,left_jab标志等)。