1

私は現在、Poison と NotPoison の 2 つのバリアントを持つ TileSet を持っています。これらのバリアントがクリックされたときに異なる反応をするようにしたいと思います。また、TileMap の個々の行と列を反復処理して、その行/列の「毒」タイルの数をカウントしたいと考えています。このタイル タイプは tileMap の特定の領域を占有するため、この方法で実装しました。コード内の特定のバリアントにアクセスするにはどうすればよいですか? バリアント間で動作を変更することは可能ですか?

4

1 に答える 1

1

画像をクリックし、キーと値をPoison持つアイテムを作成することで、Tileset に userData を追加できます。userData次に、gameScene.swiftコードで、タイルにこの userData があるかどうかを確認できます。

SKTileMapNodeこの例では、名前付きのすべての列/行を繰り返し処理し、次の値をbackground持つキーが見つかるたびにデバッグ コンソールに出力します。isPoisonKeytrue

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 に答える