【问题标题】:Blitting a Pygame Tile-map Efficiently有效地对 Pygame Tile-map 进行 Blitting
【发布时间】:2014-01-07 04:12:54
【问题描述】:

我的游戏地图是一个二维矩阵,由不同的图块组成(例如 map[y][x] = 图块)。每个图块都有一个图像和一个矩形。目前地图的大小接近 1000 个图块,将每个图块都粘贴到屏幕上需要相当长的时间。

我当前的目标是找到一种方法来减少访问矩阵的每个项目所需的时间,并且只将必要的图块对象blit 到屏幕上。这是我试图找到解决方案的主要障碍:

- 因为它是一款横向滚动游戏,所以没有一个图块是静态的(矩形总是随着玩家的移动而调整,因此必须重新填充整个屏幕)。

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

  1. 对于 tile 矩阵中的 tile:blit tile 到屏幕
  2. Blit 玩家和 NPC
  3. 更新玩家位置
  4. 如果玩家移动:调整所有图块(摄像头系统)

我正在寻找更有效的想法来做同样的事情。正如我在上面所说的,对每个该死的图块进行 blit 需要很多时间,此外,我不确定如何在它们不断变化的位置时选择性地 blit 不同的图块。 欢迎所有想法。谢谢。

【问题讨论】:

    标签: python user-interface pygame


    【解决方案1】:

    当您迭代您的图块时,您可以进行测试以检查当前图块是否包含在相机的视口中,如果是,您可以绘制,否则您可以跳过对图块进行 blitting。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-31
      • 2018-07-14
      • 2021-04-25
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多