Wie kann ich einen Winkelimpuls auf einen Sprite Kit-Knoten anwenden, der auf einer Schwenkgeschwindigkeit basiert?

Was ich hier tun möchte, ist, einen SKSpriteNode um seinen Ankerpunkt zu drehen und seine Geschwindigkeit und Richtung einer Schwenkgeste anzupassen. Wenn sich meine Schwenkbewegung also im Uhrzeigersinn um das Sprite dreht, dreht sich das Sprite im Uhrzeigersinn.

Das Problem, das ich mit meinem Code habe, ist, dass es für Schwenks unterhalb des Sprites von links nach rechts / von rechts nach links funktioniert, aber überhaupt nicht, wenn ich versuche, vertikal zu schwenken, und das Sprite dreht sich falsch, wenn ich darüber schwenke das Sprite.

Hier ist, was ich bisher habe -

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)
    }
}

Ich weiß, warum es sich nicht mit vertikalen Pfannen dreht, weil ich nur den x-Wert erhalte, also denke ich, dass ich diese irgendwie kombinieren muss.

Ich habe dies auch mit applyImpulse: atPoint: versucht, aber das führt dazu, dass das gesamte Sprite weggefegt wird.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage