0

我已经阅读了其他几篇关于围绕中心点旋转图像的帖子,但我还没有弄清楚。我什至复制粘贴了另一个 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)

它在一个包含表面的类中。

当我调用此方法时,图像会旋转但也会平移并变形。

4

1 回答 1

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)
于 2013-09-17T20:44:50.150 回答