缩放精灵大小

时间:2020-09-25 01:12:45

标签: python pygame

我有一个在模拟器周围运行的精灵。

class guys(pygame.sprite.Sprite):
    def __init__(self):
        super().__init__()
        self.image = pygame.image.load("/Users/taiji/Desktop/Sim/images/guys.png")
        self.original_image = self.image
        self.surf = pygame.Surface((50, 30))
        pos = (random.uniform(0,SCREEN_WIDTH), random.uniform(0,300))
        self.rect = self.surf.get_rect(center = pos)

我想将它们的尺寸从(50,30)缩小到(5,3)。稍后,我将根据能量来使它们增长,因此将其(5、3)更改为其他值,但是现在我只是在尝试降低基础知识。我尝试过:

def grow(sprites):
    for entity in sprites:
        pygame.transform.scale(entity.surf, (5, 3))

但是它们根本没有改变。有人可以帮我弄这个吗?我需要对entity.rect做任何事情,以便冲突仍然可以吗?

谢谢您的帮助!

1 个答案:

答案 0 :(得分:2)

之所以会这样,是因为pygame.transform.scale()不在适当的地方运行。这可以通过将表面分配给函数输出来解决,如下所示:

entity.surf = pygame.transform.scale(entity.surf, (5, 3))

请注意,此方法被认为具有破坏性,因此按比例放大可能会导致子画面无法识别。解决此问题的一种方法是保存初始sprite(似乎已经使用self.original_image了),然后只需将新sprite设置为该原始sprite的缩放版本即可。

相关问题