Повернуть объект в направлении его движения

Существует ли относительно простой способ поворота SKSpriteNode так, чтобы он всегда был направлен в направлении своего движения? В моем классе Gamescene есть система объектов с относительными физическими телами, которые накладывают друг на друга импульсы при столкновении. Это делает относительно трудным отслеживание точно, в каком направлении движется объект. Некоторые из объектов также не имеют правильной формы, что делает вещи немного более хаотичными. Я попробовал нас, используя тригонометрию (например, арктангенс), но она работает только так, как задумано, в очень особых обстоятельствах. Может быть, есть способ узнать угол траектории узла SKSpriteNode, чтобы я мог повернуть объект на этот угол? Спасибо за любую помощь, вы можете предоставить!

РЕДАКТИРОВАТЬ:

Я создал расширение для CGVector и попытался повернуть узел SKSpriteNode в направлении его скорости (спасибо 0x141E за идею) после столкновения двух объектов, но, похоже, он не работает должным образом

func didBeginContact(contact: SKPhysicsContact) {
    var firstBody : SKPhysicsBody = contact.bodyA
    var secondBody : SKPhysicsBody = contact.bodyB
    if ((firstBody.categoryBitMask == PhysicsCatagory.Blade) && (secondBody.categoryBitMask == PhysicsCatagory.Laser))
    {
        if (secondBody.node != nil)
        {
            if (saberAngle <= 0 && LCR == 1) // Blade pointing right
            {
                let rebound = CGVectorMake(-reboundStrength*sin(1.5707 + saberAngle), reboundStrength*cos(1.5707 + saberAngle))
                secondBody.applyImpulse(rebound)
            }
            else if (saberAngle > 0 && LCR == -1) // Blade pointing left
            {
                let rebound = CGVectorMake(reboundStrength*sin(1.5707 - saberAngle), reboundStrength*cos(1.5707 - saberAngle))
                secondBody.applyImpulse(rebound)
            }
            if (secondBody.velocity.speed() > 0.01){
                (secondBody.node as! SKSpriteNode).zRotation = secondBody.velocity.angle() - offset
            }
        }
    }
}

Я не делал этого в методе didSimulatePhysics (), потому что бывали случаи, когда узел, который я пытался повернуть, не существовал, и я получал ошибки, такие как «Использование неразрешенного идентификатора« sprite »».

РЕДАКТИРОВАТЬ:

Я заставил его работать, просто создав и выполнив действие rotate, которое поворачивает спрайт к secondBody.velocity.angle () - offset, но мне все еще интересно, почему мой код раньше не работал ^^

Ответы на вопрос(1)

Ваш ответ на вопрос