Я работаю с программным добавлением плиток в SKTileMapNode.Все работает хорошо с получением нужного количества плиток, проблема возникает только при попытке отобразить их на экране.![Sample output 6x6 map](https://i.stack.imgur.com/sOV6y.png)
вы увидите, что на самом деле это не выглядит как 6x6, но должно быть намного больше, но если вы посмотрите на то, как расположены плитки,Вы увидите 5x5 в правом верхнем углу, а затем большие длинные бары того же цвета.Но теперь, проверьте вывод:
0.0 0 0
-0.24247201 1 0
-0.34696135 2 0
-0.42960075 3 0
-0.622688 4 0
-0.75301373 5 0
-0.1590038 0 1
-0.3293429 1 1
-0.4532277 2 1
-0.5414402 3 1
-0.6365295 4 1
-0.74014837 5 1
-0.19817059 0 2
-0.33490476 1 2
-0.5156779 2 2
-0.6816129 3 2
-0.74775416 4 2
-0.7614269 5 2
-0.232784 0 3
-0.38513133 1 3
-0.58570683 2 3
-0.7466342 3 3
-0.8207564 4 3
-0.8160349 5 3
-0.35956064 0 4
-0.4724255 1 4
-0.64021933 2 4
-0.7772983 3 4
-0.8449071 4 4
-0.8870924 5 4
-0.46846196 0 5
-0.53693193 1 5
-0.7096603 2 5
-0.8055851 3 5
-0.874175 4 5
-0.97741973 5 5
там ровно 36 плиток, что означает, что длинные цветные полосы - это одна плитка.как я могу это исправить?
let surfaceTerrainSource:GKNoiseSource = GKPerlinNoiseSource(frequency: 5, octaveCount: 2, persistence: 0.1, lacunarity: 10, seed: Int32(arc4random()/2))
let surfaceTerrain:GKNoise = GKNoise(surfaceTerrainSource)
/*let caveTerrainSource1:GKNoiseSource = GKPerlinNoiseSource(frequency: 4, octaveCount: 1, persistence: 0.1, lacunarity: 1.5, seed: 374)
let caveTerrain:GKNoise = GKNoise(caveTerrainSource1)
let caveTerrainSource2:GKNoiseSource = GKPerlinNoiseSource(frequency: 4, octaveCount: 1, persistence: 0.1, lacunarity: 1.5, seed: 128)
let caveTerrain2:GKNoise = GKNoise(caveTerrainSource2)
caveTerrain.multiply(caveTerrain2)
surfaceTerrain.multiply(caveTerrain)*/
let terrainMap:GKNoiseMap = GKNoiseMap(surfaceTerrain)
var terrainTiles:SKTileMapNode = SKTileMapNode()
let tileSet = SKTileSet(named: "Sample Grid Tile Set")!
let tileSize = CGSize(width: 8, height: 8)
let rows = 6, cols = 6
terrainTiles = SKTileMapNode(tileSet: tileSet,
columns: cols,
rows: rows,
tileSize: tileSize)
//terrainTiles.enableAutomapping = true
`for col in 0..<cols {
for row in 0..<rows {
//Get a value from our Noise Map returns -1.0 to 1.0
let val = terrainMap.value(at: vector2(Int32(row),Int32(col)))
//We will then decide what tiles correspond to what value
print(val, " ", row, " ", col)
switch val {
case -1.0..<(-0.5):
if let g = tileSet.tileGroups.first(where: {
($0.name ?? "") == "Water"}) {
terrainTiles.setTileGroup(g, forColumn: col, row: row)
}
case -0.5..<(0.0):
if let g = tileSet.tileGroups.first(where: {
($0.name ?? "") == "Sand"}) {
terrainTiles.setTileGroup(g, forColumn: col, row: row)
}
case 0.0..<(0.5):
if let g = tileSet.tileGroups.first(where: {
($0.name ?? "") == "Grass"}) {
terrainTiles.setTileGroup(g, forColumn: col, row: row)
}
default:
if let g = tileSet.tileGroups.first(where: {
($0.name ?? "") == "Cobble"}) {
terrainTiles.setTileGroup(g, forColumn: col, row: row)
}
}
}
}
//terrainTiles.anchorPoint = CGPoint(x: 0,y: 0)
self.addChild(terrainTiles)
print(terrainTiles.mapSize)`
это мой код, если кто-то может помочь, пожалуйста