【问题标题】:pygame rotation around center pointpygame围绕中心点旋转
【发布时间】:2013-09-22 10:45:26
【问题描述】:

我已经阅读了其他几篇关于围绕中心点旋转图像的帖子,但我还没有弄清楚。我什至复制粘贴了另一个 SO question 上发布的解决方案,但它没有用。

这是我的代码

  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)

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

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

【问题讨论】:

    标签: rotation pygame center


    【解决方案1】:

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

    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)
    

    【讨论】:

    • 我的印象是“self.surface = pygame.transform.rotate(self.surface, angle)”隐含地分配了一个新的旋转矩形,因为矩形是表面的一个属性。我的课程不包含 rect 属性,我每次都使用 surface.get_rect()。
    猜你喜欢
    • 2021-09-01
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    相关资源
    最近更新 更多