pygame.transform.rotate无效

时间:2015-09-17 03:02:45

标签: python pygame

下面的代码是我在pygame中制作的游戏中的npc类的绘制函数(来源:https://github.com/hailfire006/games/blob/master/strategy%20gamev2),除了这一行之外它都很有效

urlCh

应该将npc旋转到它移动到的点。无论出于何种原因,它只是不旋转。我认为这可能与我不将此函数的结果存储到变量中这一事实有关,但我不确定。

功能的其余部分:

pygame.transform.rotate(self.sprite.image,angle)

1 个答案:

答案 0 :(得分:1)

您需要self._base_spriteself._active_sprite

将您的init代码设置为初始化_base_sprite,然后从以下位置更改您的行:

pygame.transform.rotate(self.sprite.image,angle)

为:

self._active_sprite = pygame.transform.rotate(self._base_sprite.image,angle)

然后blit你的活动精灵

原因是:

  • 当旋转精灵时,你会缓冲图像,这样就不会丢失像素(包括任何alpha角),这会增加空间
  • 如果您旋转旋转的精灵,请重复此过程
  • 如果你继续旋转,你的内存将耗尽
  • 因此,我们在内存中保留两个表面,一个“基本”表面,一个“活动”表面。

此外,您的.rect调整代码应该只在您的init函数中完成。你想尝试调整精灵的中心,我想?

编辑:注意,this question here高度相关(并在侧边栏中)。