SKSpriteNode获取0到360度的角度值

时间:2018-04-27 15:30:18

标签: ios swift sprite-kit

我旋转SKSpriteNode。我需要以度为单位得到角度的值。我使用SKNode zRotation

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

文档说:

  

正值表示逆时针旋转。

但是随着车轮的旋转,角度最多只能打印180度。然后从-180到0打印负角度!为什么?如何获得0到360度的角度?

1 个答案:

答案 0 :(得分:3)

我的建议是你不应该做你建议的事情。如果轮换结果为负数,则因为 为负数。但是,如果您真的想要这样做,则可以执行此操作:如果结果为负,请为其添加360。我们可以随时编写一个CGFloat扩展来处理这个问题:

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

现在您的代码变为

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