2016-07-15 5 views
2

У меня есть следующий код для генерации шума с использованием нового GameplayKitGKNoise. Я не уверен, как это использовать с SKTileMapNode. Кто-нибудь пробовал это? В настоящий момент шум применяется к каждой плите, но не к общему TileMap. Есть ли способ использовать созданный шум для всей карты?Создание процедурной карты - SpriteKit и GameplayKit

let noise: GKNoise = GKNoise(noiseSource: GKPerlinNoiseSource()) 
let noiseMap: GKNoiseMap = GKNoiseMap(noise: noise) 
let texture: SKTexture = SKTexture(noiseMap: noiseMap) 

let tileDef = SKTileDefinition(texture: texture) 
let tileGroup = SKTileGroup(tileDefinition: tileDef) 
let tileSet = SKTileSet(tileGroups: [tileGroup]) 

// Create a tile map 
let tileSize = CGSize(width: 32.0, height: 32.0) 
let tileMap = SKTileMapNode(tileSet: tileSet, columns: 16, rows: 16, tileSize: tileSize) 

// Fill the entire map with a tile group 
tileMap.fill(with: tileGroup) 

self.addChild(tileMap) 
+0

Что вы пытаетесь сделать точно? –

+0

@Mr_Pouet Я пытаюсь создать ландшафт. У 'tileSet' есть набор плиток на выбор, и я ожидаю, что функция шума создаст шаблон плитки для меня. – Deepak

ответ

2

GKNoise возвращает шум в диапазоне [-1.0,1.0].

Вам необходимо нанести на карту это каким-либо значимым образом в игру. Тривиальный пример - сказать, что все между [-1.0,0.0] - это вода, а все между (0.0,1.0) - это земля.

Как только вы определили, пробовать один раз для каждой плитки, которую вы хотите заполнить, а затем использовать свое правило, чтобы решить, какую плиту использовать.