Pygame - 以不同速度移动精灵
Pygame - Moving Sprites at Different Speeds
我正在研究我正在使用的几个精灵的机制。我正在研究涉及收集硬币的游戏。我有旋转硬币的精灵图像。我为硬币精灵创建了一个 class 并编写了一个更新函数,它从一个图像精灵切换到下一个。硬币在旋转,但我遇到的问题是它旋转得太快了。我怎样才能减慢硬币的旋转速度?任何帮助将不胜感激。谢谢!
这是硬币class:
class coins (pygame.sprite.Sprite):
coin_spin_frames = []
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
sprite_sheet = SpriteSheet('stuff/coins_1.png')
image = sprite_sheet.get_image(0, 0, 40, 42)
self.coin_spin_frames.append(image)
image = sprite_sheet.get_image(0, 42, 40, 42)
self.coin_spin_frames.append(image)
image = sprite_sheet.get_image(0, 84, 40, 42)
self.coin_spin_frames.append(image)
image = sprite_sheet.get_image(0, 130, 40, 42)
self.coin_spin_frames.append(image)
self.image = self.coin_spin_frames[0]
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def update(self):
if self.image == self.coin_spin_frames[0]:
self.image = self.coin_spin_frames[1]
elif self.image == self.coin_spin_frames[1]:
self.image = self.coin_spin_frames[2]
elif self.image == self.coin_spin_frames[2]:
self.image = self.coin_spin_frames[3]
elif self.image == self.coin_spin_frames[3]:
self.image = self.coin_spin_frames[0]
首先,确定您希望硬币旋转多快。假设您希望完成一个完整的循环需要 2 秒。
update() 函数可以调用 time.time(),并且 mod 它除以循环时间,然后除以循环时间。 (123121213.2 % 2 = 1.2. 1.2 / 2 = 0.6)。现在,显示 self.coin_spin_frames 列表中 60% 的图像。 (int(len(self.coin_spin_frames) * 0.6))
我正在研究我正在使用的几个精灵的机制。我正在研究涉及收集硬币的游戏。我有旋转硬币的精灵图像。我为硬币精灵创建了一个 class 并编写了一个更新函数,它从一个图像精灵切换到下一个。硬币在旋转,但我遇到的问题是它旋转得太快了。我怎样才能减慢硬币的旋转速度?任何帮助将不胜感激。谢谢!
这是硬币class:
class coins (pygame.sprite.Sprite):
coin_spin_frames = []
def __init__(self, x, y):
pygame.sprite.Sprite.__init__(self)
sprite_sheet = SpriteSheet('stuff/coins_1.png')
image = sprite_sheet.get_image(0, 0, 40, 42)
self.coin_spin_frames.append(image)
image = sprite_sheet.get_image(0, 42, 40, 42)
self.coin_spin_frames.append(image)
image = sprite_sheet.get_image(0, 84, 40, 42)
self.coin_spin_frames.append(image)
image = sprite_sheet.get_image(0, 130, 40, 42)
self.coin_spin_frames.append(image)
self.image = self.coin_spin_frames[0]
self.rect = self.image.get_rect()
self.rect.x = x
self.rect.y = y
def update(self):
if self.image == self.coin_spin_frames[0]:
self.image = self.coin_spin_frames[1]
elif self.image == self.coin_spin_frames[1]:
self.image = self.coin_spin_frames[2]
elif self.image == self.coin_spin_frames[2]:
self.image = self.coin_spin_frames[3]
elif self.image == self.coin_spin_frames[3]:
self.image = self.coin_spin_frames[0]
首先,确定您希望硬币旋转多快。假设您希望完成一个完整的循环需要 2 秒。
update() 函数可以调用 time.time(),并且 mod 它除以循环时间,然后除以循环时间。 (123121213.2 % 2 = 1.2. 1.2 / 2 = 0.6)。现在,显示 self.coin_spin_frames 列表中 60% 的图像。 (int(len(self.coin_spin_frames) * 0.6))