我旋转SKSpriteNode。我需要以度为单位得到角度的值。我使用SKNode zRotation
:
print((childNode(withName: "wheel")?.zRotation)! * 180 / CGFloat.pi)
文档说:
正值表示逆时针旋转。
但是随着车轮的旋转,角度最多只能打印180度。然后从-180到0打印负角度!为什么?如何获得0到360度的角度?
答案 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