2016-09-16 25 views
1

沒有人知道如何使用Swift以編程方式創建SKTileMapNode嗎? (注:我不想做這個使用編輯器,我想要實現這個程序只)以編程方式在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,我不明白爲什麼,scale是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) 

還爲SKTilemapNode接受SKTileGroup

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

我強烈建議利用內置的Xcode創建TileSets和TileMaps功能的初始化器。您仍可以編程方式填寫地圖。

相關問題