使用按键控制精灵动画
Controlling sprite animation with keypress
我一直在开发一款拳击游戏。在花了几个小时创建精灵 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)
这是播放器的一部分class:
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 张图像 sheet。是否只是使用更多图像创建更流畅的动画?
想一想动画(或打孔)需要多长时间,如果时间到了,请再次将 left_jab
设置为 False
。
一个非常简单的方法是将您的代码更改为:
if self.current_image >= self.numImages - 1:
self.current_image = 0
left_jab = False
所以一旦动画循环一次,我们就停止它。
当然这不是最终的解决方案,但您会明白的。您没有显示完整代码,但我建议将属于 player/boxer 实体的所有逻辑移动到其 class 中(检查按键、left_jab
标志等)。
我一直在开发一款拳击游戏。在花了几个小时创建精灵 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)
这是播放器的一部分class:
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 张图像 sheet。是否只是使用更多图像创建更流畅的动画?
想一想动画(或打孔)需要多长时间,如果时间到了,请再次将 left_jab
设置为 False
。
一个非常简单的方法是将您的代码更改为:
if self.current_image >= self.numImages - 1:
self.current_image = 0
left_jab = False
所以一旦动画循环一次,我们就停止它。
当然这不是最终的解决方案,但您会明白的。您没有显示完整代码,但我建议将属于 player/boxer 实体的所有逻辑移动到其 class 中(检查按键、left_jab
标志等)。