1

我目前有一个有两种变体的 TileSet:Poison 和 NotPoison。我希望这些变体对被点击做出不同的反应,并且我还想遍历我的 TileMap 的各个行和列,以计算该行/列中“毒药”图块的数量。我以这种方式实现它是因为这种瓦片类型占用了瓦片地图的某个区域。如何访问代码中的特定变体?是否可以改变变体之间的行为?

4

1 回答 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 回答