私は現在、Poison と NotPoison の 2 つのバリアントを持つ TileSet を持っています。これらのバリアントがクリックされたときに異なる反応をするようにしたいと思います。また、TileMap の個々の行と列を反復処理して、その行/列の「毒」タイルの数をカウントしたいと考えています。このタイル タイプは tileMap の特定の領域を占有するため、この方法で実装しました。コード内の特定のバリアントにアクセスするにはどうすればよいですか? バリアント間で動作を変更することは可能ですか?
質問する
387 次
1 に答える
1
画像をクリックし、キーと値をPoison
持つアイテムを作成することで、Tileset に userData を追加できます。userData
次に、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 に答える