我正在使用pygame。我想建立一个2D滚动游戏。我不想为了制作我的大地图而必须对所有必要的作品进行编程。是否可以使用png文件(可能是地图)并让精灵与图像的任何部分进行交互,就好像它是一个矩形?或导入并将图像转换为rects?提前致谢。
答案 0 :(得分:0)
我假设通过“互动”你主要指的是碰撞检测(即控制地图上某个角色能够和不能移动的位置)。这是一个非常广泛的主题,有很多可用的资源。
查看pygame.mask
模块(docs here)。要做你正在描述的事情,你可以通过用你的等级覆盖你的等级来创建单独的掩模图像。一种颜色用于无法通过的区域,另一种颜色用于可以通过的区域。然后pygame.mask.from_threshold()
可以自动创建一个Mask
对象,您可以使用它来检测精灵和关卡之间的碰撞。
作为一个非常简单的例子,请考虑这个马里奥级别:
碰撞掩码可能如下所示:
请注意,尽管是“水平的一部分”,但面具上没有考虑这些方框。这种方法只对一个级别的完全静态部分非常有用。这些盒子可能是一个带有自己的rect / mask的精灵来检测碰撞。在这种情况下,管道只是一个固体物体。
另请注意,具有复杂蒙版的整个关卡的一个大图像可能会导致性能问题。根据我的经验,滚动大图像不是Pygame做得好的。
tl; dr - 这可能(在某种程度上),但不会对性能友好。