改变 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 的位置不会改变它的行和列的位置的主要内容,如果未能解决你的问题,请参考以下文章
Angular 6 Transform Animation 不会改变 Element 上的样式