SKAction等待完成

时间:2016-03-23 22:24:08

标签: ios swift sprite-kit

我正在制作一个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属性。因此,我想等到动画完成后再更新相机位置。怎么办呢?

1 个答案:

答案 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在你的情况下是什么(玩家或场景)。