2016-07-15 7 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) 사이의 모든 것이 땅이라는 것입니다.

일단이 매핑이 무엇인지 결정했으면 GKNoiseMap에서 getValue()를 사용하십시오. 채우기를 원하는 각 타일에 대해 한 번 샘플링 한 다음 규칙을 사용하여 사용할 타일을 결정하십시오.