0

我目前正在用 pygame、Python 3 制作游戏,而给我带来问题的部分代码是:

for counter in range(0, 30):
                particles = pygame.image.load('particles.png').convert()
                particles = pygame.transform.rotozoom(particles, 36*counter, 1.1**counter).convert()                
                particles.set_colorkey((0, 0, 0, 0))
                screen.blit(particles, particles.get_rect(centerx=480, centery=100))                
                pygame.display.flip()                
                time.sleep(0.05)

particles.png 只是透明背景上的几个彩色像素。问题是当图像被旋转和缩放时,其中一些粒子会变得模糊,导致它们周围出现大量黑色方块。

我该如何解决这个问题?提前致谢!!

4

1 回答 1

1

我对 pygame 的 rotozoom 与透明度相结合的体验很糟糕。考虑以下事项,而不是加载图像然后对其进行旋转缩放:

  • 使用 PIL 库:

    1. 使用 pygame.image.tostring 将加载的表面转换为字符串
    2. 将字符串转换为 Image 对象
    3. 使用 PIL 的函数替换 rotozoom(缩放旋转
    4. 使用相同的方法将 Image 对象转换回表面
  • 使用数学:

    1. 加载有关粒子位置和颜色的数据,或从加载的表面推断
    2. 根据角度和缩放,使用简单的数学函数来计算它们的新位置
    3. 使用 pygame.gfxdraw、pygame.draw 或 pygame.Surface.set_at 绘制它们

祝你好运!

于 2016-05-02T09:49:20.707 回答