Изменение положения SKTileMapNode не меняет расположение его строк и столбцов. - PullRequest
0 голосов
/ 28 января 2020

Итак, у меня есть 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")
}

}

Результат просмотра в реальном времени

Отображение спрайта в реальном времени, отображаемое в соответствии с назначением, когда я оставляю карту тайла в ее первоначальном месте

1 Ответ

0 голосов
/ 03 февраля 2020

Я решил это, добавив узел как дочерний элемент карты вместо дочернего элемента вида

...