SKTileMapNode не отображается правильно в поле зрения
Я работаю с программным добавлением плиток в SKTileMapNode. Все работает хорошо с получением нужного количества плиток, проблема возникает только при попытке отобразить их на экране.
вы увидите, что на самом деле это не выглядит как 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)`
это мой код, если кто-нибудь может помочь, пожалуйста