Movendo um objeto pela tela a uma certa velocidade. (Kit Sprite)

Eu tenho um objeto que precisa mover para cima e para baixo na tela. Quando você clica pela primeira vez, ele desce a tela para um terminal com uma duração de 3 segundos. Você pode clicar a qualquer momento para impedir que ele desça e fazer com que ele comece a subir para um terminal diferente, novamente com a duração de 3 segundos. O problema de fazê-lo dessa maneira é que, se você clicar para mover o objeto para baixo, mas imediatamente clicar novamente para movê-lo para cima, o objeto move-se para cima, mas a uma taxa muito lenta, porque tem uma duração de 3 segundos. (Espero que isso faça sentido). Então, o que eu quero é parar de usar a duração para definir o ritmo / velocidade na qual o objeto se move. Existe uma maneira de dizer mover para o ponto x.y na velocidade em branco? Obrigado. (Não importa onde o objeto esteja e precise ser movido, quero que ele sempre se mova no mesmo ritmo.)

Isto é o que eu uso para mover o objeto agora:

func moveObject(){
    let endpoint = CGPoint(x: self.size.width / 2 , y: self.size.height / 1.8888888888 )
    let moveObject = SKAction.moveTo(endpoint, duration: 3.0 )
    let moveObjectSequence = SKAction.sequence([moveLine])
    Object.runAction(moveLineSequence)
}

Código após correções:

func dropLine(){
    if hookNumber == 1{
        let endpoint = CGPoint(x: self.size.width / 2 , y: self.size.height / 1.8888888888 )
        let moveLine = SKAction.moveTo(endpoint, duration: getDuration(fishLine.position,pointB:endpoint,speed:300.0))
        let moveLineSequence = SKAction.sequence([moveLine])
        fishLine.runAction(moveLineSequence)
    }
}

func dropHook(){
    if hookNumber == 1{
        let endpoint = CGPoint(x: self.size.width / 2 , y: self.size.height - 2030)
        let moveLine = SKAction.moveTo(endpoint, duration: getDuration(fishHook.position,pointB:endpoint,speed:300.0))
        let moveLineSequence = SKAction.sequence([moveLine])
        fishHook.runAction(moveLineSequence)
            hookNumber = 2
    }
}

func raiseLine(){
    if hookNumber == 2{
        let endpoint = CGPoint(x: self.size.width / 2 , y: 3050 )
        let moveLine = SKAction.moveTo(endpoint, duration: getDuration(fishLine.position,pointB:endpoint,speed:300.0))
        let moveLineSequence = SKAction.sequence([moveLine])
        fishLine.runAction(moveLineSequence)
    }
}

func raiseHook(){
    if hookNumber == 2{
        let endpoint = CGPoint(x: self.size.width / 2 , y: self.size.height - 3 )
        let moveLine = SKAction.moveTo(endpoint, duration: getDuration(fishHook.position,pointB:endpoint,speed:300.0))
        let moveLineSequence = SKAction.sequence([moveLine])
        fishHook.runAction(moveLineSequence)
    }
}

questionAnswers(1)

yourAnswerToTheQuestion