Отказ от ответственности : я вообще не эксперт в играх SpriteKit или iOS.Скорее всего, будет лучшее решение.
То, что вы пробовали, уже кажется разумным, кроме того, что вы набрали SKAction.move(to: realDest, duration: 2.0)
до того, как проверили счет.
Я думаю, вам лучше сделать что-нибудьнапример:
let highScore = UserDefaults().integer(forKey: "highscore")
let duration: CGFloat = highScore >= 30 ? 1.0 : 2.0
let actionMove = SKAction.move(to: realDest, duration: duration)
// add move end, run the animation
Единственное логическое изменение - это длительность движения, имитирующая скорость, поэтому заранее определите это значение на основе логики игры, а затем просто передайте его в