使用平铺地图文件 (tmx) 时处理不同的屏幕尺寸

dealing with different screensizes when using tiled map files (tmx)

我正在尝试学习 spritekit,但我对某些事情感到有点困惑。我知道我需要有 @2 个图​​像文件,它需要是标准文件大小的两倍,一旦我正确命名它们,xcode 将处理其余部分。但是,在处理平铺时,我是否需要 level1.tmx 和 level1@2.tmx

的平铺文件

所以这是我今天做的测试:

  1. 创建了两个图块表,一个是 32x32,另一个是 64x64(2x)。
  2. 在平铺中创建两个关卡,一个是 64x64 平铺大小,关卡大小是 2048x1536(2x 关卡)。我在那块上使用了 64x64 的瓷砖。我创建的另一个关卡完全相同,但我创建它时使用的是 32x32 的图块大小,这使得关卡大小为 1024x768,并且我在上面使用了 32x32 的图块表。

所以现在我有两个 tmx 文件和两个 spritesheet,一个级别,在 ipad。

我这样做正确吗?一旦我开始做 iphone,我每个级别会有 4 或 6 组?

我认为如果我将它们命名为 level1@2x.tmx,xcode 将不会以与 tmx 文件相同的方式工作,对吗?如果不是,假设我上面所做的一切都是正确的,如何加载正确的 tmx 文件?我是否需要检查设备类型、分辨率并根据每个级别加载我的地​​图文件?

我想也许我做的不对,所以我想在这里停下来问问,然后再进一步。

TMX 文件不会在 iOS 中自动加载,所以我猜您使用的是 SKAToolKit or the JSTileMap 据我所知最流行的两个文件之一。我自己和其他 Sprite Kit Alliance 成员将 SKAToolKit 放在一起,所以我想我可以从那个角度回答你的问题,因为 JSTileMap 也应该类似。

简短的回答是使用 1x 资产构建地图,但在 Xcode 中提供标准和视网膜图像。

首先,您使用 1x 资产创建地图。加载地图时,它使用点而不是像素。因此,例如,如果您制作 32x32 像素的瓦片地图,它将被视为 32x32 点地图。创建精灵时,它会根据设备提取正确的图像。如果图像名为 tree.png 并且是 32x32,它将占用 32x32(点)图块的 space。如果你有一张名为 tree@2x.png 64x64 iOS 的图像,它将用于 Retina 设备。因为它是一个@2x 图像,它将占用 32x32(点)但将是 64x64 像素。

希望这是有道理的。如果不告诉我。