我有一个在模拟器周围运行的精灵。
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做任何事情,以便冲突仍然可以吗?
谢谢您的帮助!
答案 0 :(得分:2)
之所以会这样,是因为pygame.transform.scale()
不在适当的地方运行。这可以通过将表面分配给函数输出来解决,如下所示:
entity.surf = pygame.transform.scale(entity.surf, (5, 3))
请注意,此方法被认为具有破坏性,因此按比例放大可能会导致子画面无法识别。解决此问题的一种方法是保存初始sprite(似乎已经使用self.original_image
了),然后只需将新sprite设置为该原始sprite的缩放版本即可。