2016-09-16 6 views
1

Swiftを使用してプログラムでSKT​​ileMapNodeを作成する方法を知っている人はいますか? (注:私は、エディタを使用してこれを行うにはしたくない、私はプログラムでのみこれを達成したい)プログラムでSwiftでSKTileMapNodeを作成

私は次のことを試してみましたが、私のタイルマップ

let bgTexture = SKTexture(imageNamed: "background") 
let bgDefinition = SKTileDefinition(texture: bgTexture, size: bgTexture.size()) 
let bgGroup = SKTileGroup(tileDefinition: bgDefinition) 
let tileSet = SKTileSet(tileGroups: [bgGroup]) 
let bgNode = SKTileMapNode(tileSet: tileSet, columns: 5, rows: 5, tileSize: bgTexture.size()) 
bgNode.position = CGPoint(x: self.frame.size.width/2, y: self.frame.size.height/2) 
bgNode.setScale(1) 
self.addChild(bgNode) 

大歓迎任意の助けをレンダリングしていません

+1

あなたは実際にあなたのマップを作ることはありません、あなたが使っているタイルがどのようになっているのか、ノードはタイルを知っています。これについて私はあなたに答えを提供することはできません。 – Knight0fDragon

+0

@ Knight0fDragon SKTileMapNodeを拡大/縮小できるかどうか知っていますか? – Confused

+0

@Confused、私はなぜ、スケールがSKNodeのメンバーであるのか分かりません(よくxScale yScaleです) – Knight0fDragon

答えて

3

マップ全体を単一の背景タイルでレイアウトするには、各列と各行を繰り返します。最初に背景タイルを取得する必要があります。

let tile = bgNode.tileSet.tileGroups.first(
    where: {$0.name == "background"}) 

for column in 0..4 { 
    for row in 0..4 { 
     bgNode.setTileGroup(tile, forColumn: column, row: row) 
    } 
} 

フラッドフィルを達成するための便利な機能もあります。

bgNode.fill(with: tile) 

SKTileGroup

let bgNode = SKTileMapNode(tileSet: tileSet, columns: 5, rows: 5, tileSize: bgTexture.size(), fillWithTileGroup: tile) 

を受け入れSKTilemapNodeための初期化子もあり、私は強くタイルセットとタイルマップを作成するためのXcodeに組み込まれた機能を利用することをお勧めします。それでもプログラマチックにマップを埋めることができます。

関連する問題