Pygame - 以不同的速度移动精灵

时间:2015-05-13 23:13:37

标签: python pygame

我正在研究我正在使用的几个精灵的机制。我正在开发涉及收集硬币的游戏。我有旋转硬币的精灵图像。我为硬币精灵创建了一个类,我写了一个更新函数,它从一个图像精灵切换到下一个。硬币在旋转,但我遇到的问题是旋转速度太快。我怎么能减慢硬币的旋转速度呢?任何帮助将不胜感激。谢谢!

这是硬币类:

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]

1 个答案:

答案 0 :(得分:1)

首先,确定您想要硬币旋转的速度。让我们假设您需要2秒才能完成循环。

update()函数可以调用time.time(),并根据循环时间来修改它,然后将其除以循环时间。 (123121213.2%2 = 1.2.1.2 / 2 = 0.6)。现在,显示通过self.coin_spin_frames列表60%的图像。 (int(len(self.coin_spin_frames)* 0.6))