pygame围绕中心点旋转

时间:2013-09-17 20:26:53

标签: rotation pygame center

我已经阅读了其他一些关于围绕中心点旋转图像的帖子,但我还没弄明白。我甚至复制粘贴在另一个SO问题上发布的解决方案之一,但它没有用。

这是我的代码

  def rotate(self, angle):
    self.old_center = self.surface.get_rect().center
    self.surface = pygame.transform.rotate(self.surface, angle)
    self.surface.get_rect(center = self.old_center)

它在包含表面的类中。

当我调用此方法时,图像会旋转,但也会翻译,并会失真。

1 个答案:

答案 0 :(得分:2)

您没有分配新的矩形,您应该执行以下操作:

self.rect = self.surface.get_rect(center = self.old_center)

你应该始终保持原始表面并从原始表面旋转,这样多次旋转时扭曲不会累积。

<强>更新

如果您不想跟踪rect对象,可以在每次blit时执行此操作。如果你保留center坐标。

示例:

rect = object.surface.get_rect()
rect.center = object.center
display.blit(object.surface, rect.topleft)