我目前有一个带有两个变体的TileSet:Poison和NotPoison。我希望这些变体对单击的反应不同,并且我还想遍历TileMap的各个行和列,以计算该行/列中“毒药”图块的数量。我以这种方式实现了此方法,因为此图块类型占用了tileMap的特定区域。如何访问代码中的特定变体?是否可以更改变体之间的行为?
最佳答案
您可以通过单击图像Poison
并使用键和值创建userData
项,在tileset中添加userData,例如'isPoisonKey'的值为1,数据类型为boolean。然后,在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)
}
}
}
}
}
关于ios - 代码中的SKTileSet切片变体访问,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40295719/