如何在Pygame中降低Sprite FPS?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Pygame中降低Sprite FPS?相关的知识,希望对你有一定的参考价值。

所以我的精灵在这里,我想知道如何在不降低游戏速度的情况下降低它的速度?video of my sprite正如您在视频中看到的那样,它的移动速度很快,我想放慢速度,我该怎么做

class snow:
    def __init__(self,x,y,height,width,color):
        self.x = x
        self.y = y
        self.height = height
        self.width = width
        self.color = color
        self.games = [
        pygame.image.load("key1.png"),
        pygame.image.load("key2.png"),
        pygame.image.load("key3.png"),
        pygame.image.load("key4.png"),
        pygame.image.load("key5.png"),
        pygame.image.load("key6.png"),
        pygame.image.load("key7.png")]
        self.anim_index = 0
        self.rect = pygame.Rect(x,y,height,width)
        self.direction = "idk"
    def draw(self):
        self.rect.topleft = (self.x,self.y)
        if self.direction == "idk":
            window.blit(self.games[self.anim_index],self.rect)
            self.anim_index += 1
            if self.anim_index == len(self.games):
                self.anim_index = 0

答案

如果要放慢动画的速度,则必须将动画索引除以一定的数字。添加一个属性(anim_frames),该属性定义动画图像的帧数,然后将anim_index除以​​anim_frames。商是当前图像索引。如果超过最大索引,则重新启动动画(anim_index = 0)。因此,anim_frames控制动画的速度。例如:

class snow:
    def __init__(self,x,y,height,width,color):
        # [...]

        self.anim_index = 0
        self.anim_frames = 10

        # [...]

    def draw(self):
        self.rect.topleft = (self.x,self.y)
        if self.direction == "idk":

            img_index = self.anim_index // self.anim_frames
            if img_index >= len(self.games):
                img_index = 0
                self.anim_index = 0
            self.anim_index += 1   

            window.blit(self.games[img_index], self.rect)

以上是关于如何在Pygame中降低Sprite FPS?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Pygame 中使用 Sprite Sheets 创建动画精灵?

如何在 Pygame 中使用 Sprite Sheets 创建动画精灵?

Pygame代码不适用于sprite组中的每个sprite

限制 Sprite 套件帧率

如何在Pygame中给pygame.sprite.rect矩形分配一个 "rect "属性?

Sprite比右侧pygame移动得更快