Как сделать скорость спрайта одинаковой?

Начал писать простейшую игру чисто что бы лучше разобраться со SpriteKit в среде Xcode на языке swift. Моя игра просто заключается в том чтобы спрайт(объект) который находиться на экране перемещался в то место на которое мы нажали пальцем, я реализовал это так:

   override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    for touch in touches {
    let location = touch.location(in: self)
        ZombieNode.run (SKAction.move(to: CGPoint(x: location.x, y: location.y), duration: 1))

    }
}

Тут все работает нормально, мы нажимаем пальцем на кнопку и спрайт движется туда, но возникла проблема что от того насколько я далеко нажму пальцем от спрайта будет меняться его скорость, это происходит потому что я реализую это через такое действие:

ZombieNode.run (SKAction.move(to: CGPoint(x: location.x, y: location.y), duration: 1))

Тут все логично действие происходит за 1 секунду поэтому чем дальше расстояние тем больше скорость - чтобы пройти его за это время, но как мне это изменить? Мне надо сделать так, чтобы независимо от расстояния была одинаковая скорость. Помогите пожалуйста, как это сделать?


Ответы (1 шт):

Автор решения: Oleg Soloviev

Вам нужно определить duration в зависимости от расстояния и нужной скорости.

(вектор расстояния от ноды до location) / скорость = duration
→ Ссылка