Я делаю игру SpriteKit, и я пытаюсь получить SKCameraNode, чтобы следить за игровым узлом. Однако, когда я получаю доступ к свойству позиции узла игрока после использования SKAction для его перемещения, позиция после запуска действия такая же, как и позиция перед ее запуском. Вот мой код сцены:SKAction Ожидание завершения
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
свойства узла игрока, пока действие не будет завершено. Поэтому я хочу подождать, пока анимация не завершится до обновления положения камеры. Как это может быть сделано?
Извините за недостаток ясности в моем вопросе. Этот код является частью моего класса 'player'. «Игрок» имеет свойство «координаты», которое представляет позицию игрока на карте. Этот код запускается, когда изменяется свойство 'координат'. То, что я хочу сделать, это запустить код в классе сцены, а не в классе игрока, как только игрок переместится. Как это может быть сделано? –
@ATyshka В чем проблема с тем, что я опубликовал? Печатает ли начало и конец местоположения плеера? – Whirlwind
Приносим извинения за недоразумение, заявляя о моей проблеме. Я обновил свой вопрос. –