将瓷砖变体添加到 SKTileGroup
Add tile variants to SKTileGroup
如何向我的 SKTileGroup 添加一个瓦片变体(例如,我想要一个普通的草地瓦片,然后是一个上面有花的草地瓦片,另一个有红色花的瓦片等)?
这是我的 SKTileGroup 声明
let grass = SKTileDefinition(texture: SKTexture(imageNamed: "grass"), size: CGSize(width: 64, height: 64))
let tileGroup = SKTileGroup(tileDefinition: grass)
您当然可以通过硬代码来完成此操作,但如果您只是创建一个 SpriteKit Tile Set
文件,您可以在其中直观地完成所有操作并通过从您的资产。从那里您还可以轻松地编辑您可能需要的任何内容,例如图块组中的放置权重等。
Apple 实际上有一个预设文件来帮助解决这个问题。它被称为 "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: {[=10=].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))
如何向我的 SKTileGroup 添加一个瓦片变体(例如,我想要一个普通的草地瓦片,然后是一个上面有花的草地瓦片,另一个有红色花的瓦片等)?
这是我的 SKTileGroup 声明
let grass = SKTileDefinition(texture: SKTexture(imageNamed: "grass"), size: CGSize(width: 64, height: 64))
let tileGroup = SKTileGroup(tileDefinition: grass)
您当然可以通过硬代码来完成此操作,但如果您只是创建一个 SpriteKit Tile Set
文件,您可以在其中直观地完成所有操作并通过从您的资产。从那里您还可以轻松地编辑您可能需要的任何内容,例如图块组中的放置权重等。
Apple 实际上有一个预设文件来帮助解决这个问题。它被称为 "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: {[=10=].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))