我目前有一个有两种变体的 TileSet:Poison 和 NotPoison。我希望这些变体对被点击做出不同的反应,并且我还想遍历我的 TileMap 的各个行和列,以计算该行/列中“毒药”图块的数量。我以这种方式实现它是因为这种瓦片类型占用了瓦片地图的某个区域。如何访问代码中的特定变体?是否可以改变变体之间的行为?
问问题
387 次
1 回答
1
您可以在 Tileset 中添加 userData,方法是单击图像Poison
并创建userData
具有键和值的项目,例如值为 1 和 dataType 布尔值的“isPoisonKey”。然后在您的gameScene.swift
代码中,您可以检查图块是否具有此 userData。
此示例遍历SKTileMapNode
命名中的每一列/行,background
并在每次找到isPoisonKey
值为的键时打印到调试控制台true
var backgroundLayer: SKTileMapNode!
override func didMove(to view: SKView) {
guard let backgroundLayer = childNode(withName: "background") as? SKTileMapNode else {
fatalError("Background node not loaded")
}
self.backgroundLayer = backgroundLayer
for row in 0..<self.backgroundLayer.numberOfRows {
for column in 0..<self.backgroundLayer.numberOfColumns {
let backgroundTile = self.backgroundLayer.tileDefinition(atColumn: column, row: row)
let isPoison = backgroundTile?.userData?.value(forKey: "isPoisonKey")
if let countNode = isPoison as? Bool {
// Code here
if countNode {
print(countNode)
}
}
}
}
}
于 2016-10-28T00:55:00.007 回答