2016-07-15 45 views
2

我有以下代码来使用新的GameplayKitGKNoise产生噪音。我不知道如何使用SKTileMapNode。有没有人试过这个?此刻,噪音适用于每个瓷砖,但不适用于整体TileMap。有没有办法将生成的噪音用于整个地图?Procedural Map Generation - 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)之间的所有东西都是土地。

一旦你决定了这个映射是什么,只需在GKNoiseMap上使用getValue()要为每个要填充的图块进行一次采样,然后使用您的规则来决定要使用哪个图块