SKSpriteNode получит значение угла от 0 до 360 градусов - PullRequest
0 голосов
/ 27 апреля 2018

Я вращаю SKSpriteNode. Мне нужно получить значение угла в градусах. Я использую SKNode zRotation:

print((childNode(withName: "wheel")?.zRotation)! * 180 / CGFloat.pi)

Документация гласит:

Положительное значение указывает на вращение против часовой стрелки.

Но при вращении колеса углы печатаются только до 180 градусов. Затем печатает отрицательные углы от -180 до 0! Зачем? Как получить углы от 0 до 360 градусов?

1 Ответ

0 голосов
/ 27 апреля 2018

Я рекомендую вам не делать то, что вы предлагаете. Если вращение выходит отрицательным, это потому, что оно является отрицательным. Тем не менее, вы можете сделать это, если вы действительно хотите: Если результат отрицательный, добавьте 360 к нему. Мы можем легко написать расширение CGFloat, чтобы позаботиться об этом:

extension CGFloat {
    var toDegreesNormalized : CGFloat {
        var deg = self * 180 / .pi
        return deg >= 0 ? deg : deg + 360
    }
}

Теперь ваш код становится

childNode(withName: "wheel")?.zRotation.toDegreesNormalized
...