python - 缩放 Sprite 大小

标签 python pygame

我有 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/

相关文章:

python - 任何加速 Python 和 Pygame 的方法?

python - 如何像 Pygame 一样管理 pyglet 中的事件?

python - Pygame碰撞代码

python - 屏幕填充不起作用

python - Wing IDE 中的 Matlab 样式变量编辑器

python - 如何以编程方式发布到 instagram

Python 异常传播

python - 如何在不知道路径的情况下从另一个相对文件夹导入?

python - Keras fit_generator() - 时间序列的批处理如何工作?

python - 如何计算 Pandas 滚动窗口中的波动率(标准差)