【问题标题】:"Merge" Multiple Images in Pygame into one Surface to rotate them all dynamically将 Pygame 中的多个图像“合并”到一个 Surface 中以动态旋转它们
【发布时间】:2020-05-20 17:00:33
【问题描述】:

目前我正在 pygame 中开发一款游戏,该游戏的灵感来自一款名为“recrew”的游戏(它是在 2020 年全球游戏果酱中制作的)目标是延长船、探索岛屿并防止您的船沉没.

为了更好的感觉,我想旋转整艘船。这艘船被表示为一个类,所有块都保存在一个列表中。每个块都是一个pygame.Surface,它在船舶类中呈现。有没有办法动态地旋转所有这些块,而不是每个块都旋转而不改变位置,整个船动态旋转。

也许这些块都可以相对于它们的位置合并到一个大的 Surface 中,或者带有块的主窗口 Surface 的一部分被保存到另一个 Surface 上。我只是不知道解决这个问题的好方法。

【问题讨论】:

    标签: python-3.x pygame python-3.7 pygame-surface


    【解决方案1】:

    您可以将图像(只是一个 Surface)blit 到任何其他表面上,而不仅仅是显示器(参见文档here)。因此,您可以创建一个合并的表面并将船图像和您想要在船上的每个图像粘贴到它上面。像这样:

    merged_surf.blit(some_surface, some_surface_rect)
    

    some_surface_rect 的位置部分描述了您想在merged_surf 上放置它的位置,因此它相对于merged_surf

    然后,您可以旋转 merged_surf,其中已包含所有其他图像(请参阅文档 here)。然后最后将merged_surf 粘贴到显示器上。

    请记住,旋转表面的边界框可能会大于原始图像的边界框。如果您试图将中心保持在原位,则需要将旋转曲面 rect 的中心分配给原始预旋转图像的中心。否则它会在旋转时出现反弹。

    【讨论】:

      猜你喜欢
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-13
      • 2012-12-20
      • 1970-01-01
      • 2019-07-27
      相关资源
      最近更新 更多