我正在制作一个SpriteKit游戏,我正在尝试让SKCameraNode跟随播放器节点。但是,当我在使用SKAction移动它之后访问玩家节点的position属性时,运行动作后的位置与运行之前的位置相同。这是我的场景代码:
func updateMap(playerX: Int, playerY: Int) {
player.coordinates = CGPoint(x: highlightedTile.tileX, y: highlightedTile.tileY)
camera?.position = player.position
}
以及我player
类的代码:
var coordinates: CGPoint {
didSet{
let moveAction = SKAction.moveTo(CGPoint(x: (coordinates.x) * 64 - 64, y: (coordinates.y) * 56 - 47), duration: NSTimeInterval(2.0))
self.runAction(moveAction)
}
}
在操作完成之前,SpriteKit不会更新播放器节点的position
属性。因此,我想等到动画完成后再更新相机位置。怎么办呢?
答案 0 :(得分:0)
在移动完成之前,您正在查询position
属性...
试试这个:
print(playerNode.position)
let moveAction = SKAction.moveTo(CGPoint(x: (coordinates.x) * 64 - 64, y: (coordinates.y) * 56 - 47), duration: NSTimeInterval(2.0))
let waitAction = SKAction.waitForDuration(NSTimeInterval(3))
self.runAction(moveAction, completion: {
print(playerNode.position)
})
另请注意,我使用playerNode
变量,该变量应代表播放器。不确定self
在你的情况下是什么(玩家或场景)。