我已经阅读了其他一些关于围绕中心点旋转图像的帖子,但我还没弄明白。我甚至复制粘贴在另一个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)
它在包含表面的类中。
当我调用此方法时,图像会旋转,但也会翻译,并会失真。
答案 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)