【问题标题】:Pygame - Moving Sprites at Different SpeedsPygame - 以不同的速度移动精灵
【发布时间】:2015-05-13 23:13:37
【问题描述】:

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

这是硬币类:

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]

【问题讨论】:

    标签: python pygame


    【解决方案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))

    【讨论】:

    • 这对我来说是有道理的,但我不太明白你回复的最后一行,你能否扩展你的说法。谢谢。
    • 一般的思路是,如果你想在2秒内循环遍历帧,并且有10帧,那么每帧应该显示0.2秒。这表示您进入 2 秒循环的时间为 1.2 秒,因此应该显示第 6 帧。给出的计算是在 self.coin_spin_frames 中找到应该显示的索引。 (我可能有一个错误。)
    • 我现在明白了。谢谢你。现在我正试图让它工作,但我不能调用 time.time()
    • 你记得输入时间吗?
    猜你喜欢
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多