Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x &引用;“合并”;将Pygame中的多个图像合并到一个曲面中,以动态旋转它们_Python 3.x_Pygame_Python 3.7_Pygame Surface - Fatal编程技术网

Python 3.x &引用;“合并”;将Pygame中的多个图像合并到一个曲面中,以动态旋转它们

Python 3.x &引用;“合并”;将Pygame中的多个图像合并到一个曲面中,以动态旋转它们,python-3.x,pygame,python-3.7,pygame-surface,Python 3.x,Pygame,Python 3.7,Pygame Surface,目前,我正在pygame wich制作一款游戏,其灵感来自一款名为“重新绘制”的游戏(该游戏是在2020年全球游戏大赛上制作的),目标是扩展船,探索岛屿,防止船沉没 为了更好的感觉,我想旋转整艘船。船舶被表示为一个类,所有区块都保存在一个列表中。每个区块都是一个单独的pygame.Surface,它在船类中获得渲染。是否有一种方法可以动态地旋转所有这些块体,从而代替每个块体的旋转而不改变位置,使整艘船动态地旋转 可能所有的块都可以相对于它们的位置合并成一个大的曲面,或者带有块的主窗口曲面的一部分

目前,我正在pygame wich制作一款游戏,其灵感来自一款名为“重新绘制”的游戏(该游戏是在2020年全球游戏大赛上制作的),目标是扩展船,探索岛屿,防止船沉没

为了更好的感觉,我想旋转整艘船。船舶被表示为一个类,所有区块都保存在一个列表中。每个区块都是一个单独的
pygame.Surface
,它在船类中获得渲染。是否有一种方法可以动态地旋转所有这些块体,从而代替每个块体的旋转而不改变位置,使整艘船动态地旋转

可能所有的块都可以相对于它们的位置合并成一个大的曲面,或者带有块的主窗口曲面的一部分被保存到另一个曲面上。我只是不知道解决这个问题的好方法。如果你不想的话,我可以上传我以后如何处理这些块的代码。非常感谢你的帮助

您可以将一个图像(只是一个曲面)blit到任何其他曲面上,而不仅仅是显示(参见文档)。因此,您可以创建一个合并曲面,并将船图像和您希望在船上显示的每个图像blit到该曲面上。像这样:

merged_surf.blit(some_surface, some_surface_rect)
其中
some\u surface\rect
的位置部分描述了要将其放置在
merged\u surf
上的位置,因此它相对于该
merged\u surf

然后,您可以旋转该
合并的\u surf
,其中包含所有其他图像(请参阅文档)。最后,将
merged\u surf
显示在显示屏上

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