Como aplicar um impulso angular a um nó do Sprite Kit com base na velocidade do gesto de movimento

O que pretendo fazer aqui é girar um SKSpriteNode em torno de seu ponto de ancoragem e ter sua velocidade e direção correspondentes a um gesto de panorâmica. Portanto, se meu gesto de movimento giratório é no sentido horário ao redor do sprite, então o sprite gira no sentido horário.

O problema que tenho com o meu código é que ele funciona muito bem para panelas abaixo do sprite da esquerda para a direita / direita para a esquerda, mas não quando tento fazer o pan na vertical e faz com que o sprite gire da maneira errada se eu mover acima sprite.

Aqui está o que eu tenho até agora -

let windmill = SKSpriteNode(imageNamed: "Windmill")

override func didMoveToView(view: SKView) {
    /* Setup gesture recognizers */
    let panGestureRecognizer = UIPanGestureRecognizer(target: self, action: "handlePanGesture:")
    self.view?.addGestureRecognizer(panGestureRecognizer)

    windmill.physicsBody = SKPhysicsBody(circleOfRadius: windmill.size.width)
    windmill.physicsBody?.affectedByGravity = false
    windmill.name = "Windmill"
    windmill.position = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height / 2)
    self.addChild(windmill)
}

func handlePanGesture(recognizer: UIPanGestureRecognizer) {
    if (recognizer.state == UIGestureRecognizerState.Changed)
    {
        pinwheel.physicsBody?.applyAngularImpulse(recognizer.velocityInView(self.view).x)
    }
}

Eu sei o motivo pelo qual não está girando com panelas verticais, pois estou apenas obtendo o valor x, então acho que preciso combiná-las de alguma forma.

Eu também tentei isso usando applyImpulse: atPoint :, mas isso resulta em todo o sprite sendo varrido.

questionAnswers(1)

yourAnswerToTheQuestion