ios - 代码中的 SKTileSet 平铺变体访问

标签 ios sprite-kit sktilemapnode

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

最佳答案

您可以通过单击图像 Poison 在 Tileset 中添加 userData并创建 userData具有键和值的项目,例如'isPoisonKey' 值为 1 和 dataType bool 值。然后在你的gameScene.swift代码你可以检查一个瓦片是否有这个用户数据。

此示例遍历 SKTileMapNode 中的每一列/行。命名为 background并在每次找到 key 时打印到调试控制台 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/

相关文章:

ios - 使用 Interface Builder 中的自动布局而不是代码使 UIView 填充包含 View

ios - RestKit RKObjectMapping 一个列表

ios - UI : iOS 中动态数据的 UI 单元测试失败

swift - 如何为 SKShapeNode 的不透明度设置动画?

ios - SpriteKit 平台游戏中的性能问题

swift - 使用 SpriteKit 在 Swift 中按名称获取 TileDefinition

android - iOS SQLite 与 Android SQLite 等价物

ios - UIProgressView - 进度条 - SpriteKit/Swift

Swift - 如何检查 Sprite 是否已分配给特定图像

swift - 真实设备上的 SKTileMap 物理错误