苹果实际上有一个预设文件来帮助解决这个问题。它被称为“SpriteKit Tile Set”。此文件允许您填写每个可能的瓦片方向,并让每个瓦片在瓦片地图中使用时遵循正确的规则。
如您所见,该文件允许您根据您的图块选择特定类型。(像部落冲突一样的等距,像进入地牢一样基于网格,或者像文明一样的六边形)
它非常简单直观。您只需将每个图像拖放到相应的插槽中,并确保每个图像都在 Assets.xcassets 文件夹中。
该文件甚至附带了一些已在其中的图块组,因此您可以查看它们的功能。
这些中的每一个都被认为是一个瓦片集。一个瓦片集包含一个(或多个)瓦片组。
每个磁贴集可以根据需要包含任意数量的磁贴组。
这些中的每一个都被视为一个瓦片组。瓦片组包含使瓦片集在瓦片地图中可用的所有图像。
要访问您决定添加的任何图块,您需要访问存储图块组的图块集。瓦片集被认为是一个数组,并且可以这样访问。
//First, we need to access the tile set where the tile groups are being stored.
let tiles = SKTileSet(named: "Sample Grid Tile Set")
let tileGroups = (tiles?.tileGroups)!
//next, we access each tile group and define them.
let grass = (tileGroups.first(where: {$0.name == "grass"}))!
let sand = tileGroups[1]
let cobblestone = tileGroups[2]
let water = tileGroups[3]
//then we collect each tile group into another tile set and put that tile set into the tile map.
let tileSet = SKTileSet(tileGroups: [water,grass,sand,cobblestone])
tileMap = SKTileMapNode(tileSet: tileSet, columns: mapWidth, rows: mapHeight, tileSize: CGSize(width: 32, height: 32))