我有 Sprite 在模拟器周围运行。
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做任何事情以使碰撞仍然正常吗?
感谢您的帮助!
最佳答案
出现这种情况是因为pygame.transform.scale()
未正常运行。这可以通过将表面分配给函数输出来解决,如下所示:
entity.surf = pygame.transform.scale(entity.surf, (5, 3))
请注意,此方法被认为是破坏性的,因此按比例缩小可能会导致 Sprite 无法识别。解决此问题的一种方法是保存初始 Sprite (似乎您已经使用 self.original_image
完成了操作)并简单地将新 Sprite 设置为原始 Sprite 的缩放版本。
关于python - 缩放 Sprite 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64056435/