高效地绘制Pygame Tile地图



我的游戏地图是一个由不同瓦片组成的2d矩阵(例如map[y][x]=瓦片)。每个磁贴都有一个图像和一个矩形。目前,该地图的大小接近1000块,需要相当长的时间才能将其中的每一块闪电式地显示到屏幕上。

我目前的目标是找到一种方法来减少访问矩阵中每一项所需的时间,并只将必要的tile对象闪电式地显示到屏幕上。以下是我试图找到解决方案的主要障碍:

-因为这是一款侧滚游戏,所以没有一个方块是静态的(矩形总是随着玩家的移动而调整,因此必须重新闪电战整个屏幕)

以下是地图在游戏中的一般功能:

  1. 对于瓦片矩阵中的瓦片:将瓦片闪电传送到屏幕
  2. 闪电侠和NPC
  3. 更新玩家位置
  4. 如果玩家移动:调整所有瓷砖(相机系统)

我正在寻找做同样事情的更有效的想法。正如我上面所说,闪电战每一块该死的瓷砖都需要很多时间,除此之外,当不同的瓷砖不断改变位置时,我不知道如何选择性地闪电战。欢迎所有想法。非常感谢。

当您在瓦片上迭代时,您可以进行测试,检查当前瓦片是否包含在相机的视图端口中,如果是,您可以绘制,否则您可以跳过对瓦片的闪电扫描。

for tile in tiles:
if camera.viewport.contains(tile.rect):
tile.draw()

contains方法用于确定一个矩形是否位于另一个矩形内部。您还需要使用两种不同的参照系,屏幕空间和世界空间。

最新更新