Итак, у меня есть TileMap, который я программно создал на детской площадке. Я изменил его положение, потому что оно отображается в левом нижнем углу окна. Затем я создал SpriteNode, который я разместил в верхнем левом углу карты, используя centerOfTile (atColumn :, Row:).
, но затем спрайт появляется в месте верхнего левого тайла карты до того, как было перемещено.
Есть идеи, как мне выполнить обновление местоположения centerOfTiles?
вот как выглядит код:
class GameScene: SKScene {
override init(size: CGSize) {
super.init(size: size)
}
override func didMove(to view: SKView) {
let heroNode = SKSpriteNode(color: .blue, size: testMap.tileSize)
heroNode.zPosition = testMap.zPosition + 1
heroNode.position = testMap.centerOfTile(atColumn: 9, row: 9)
self.addChild(heroNode)
for x in 1...testMap.numberOfColumns {
for y in 1...testMap.numberOfRows {
let tileG = (x+y)%2 == 0 ? testGrassTileGroup : testGrass2TileGroup
testMap.setTileGroup(tileG, forColumn: x, row: y)
}
}
self.addChild(testMap)
testMap.position = CGPoint(x: 170, y: 150)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Результат просмотра в реальном времени
Отображение спрайта в реальном времени, отображаемое в соответствии с назначением, когда я оставляю карту тайла в ее первоначальном месте