改变 SKTileMapNode 的位置不会改变它的行和列的位置

Posted

技术标签:

【中文标题】改变 SKTileMapNode 的位置不会改变它的行和列的位置【英文标题】:Changing the position of a SKTileMapNode doesn't change the location of it's rows and columns 【发布时间】:2020-01-28 16:19:11 【问题描述】:

所以我有一个我在操场上以编程方式创建的 TileMap。 我改变了它的位置,因为它出现在视图的左下角。 然后我使用 centerOfTile(atColumn:, Row:) 创建了一个位于地图左上角的 SpriteNode。

然后精灵出现在地图左上角的位置它被移动之前。

知道我应该如何继续更新 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")

The live view result

The live view of the sprite appearing as intended when I leave the tile map in it original place

【问题讨论】:

testMap.position = ... 之后移动heroNode 设置不起作用? @bg2b 是的,我试过了,但是没有用 【参考方案1】:

我通过将节点添加为地图的子节点而不是视图的子节点来解决此问题

【讨论】:

以上是关于改变 SKTileMapNode 的位置不会改变它的行和列的位置的主要内容,如果未能解决你的问题,请参考以下文章

SKTileMapNode:创建一个无限大小的瓦片地图

CLLocationManager 不会改变坐标?

Angular 6 Transform Animation 不会改变 Element 上的样式

定位的区别

为啥权重不会改变 sci-kit 学习包中的 K-mean 聚类中心位置?

苹果怎么改变手机定位位置