【问题标题】:SKSpriteNode get the value of the angle from 0 to 360 degreesSKSpriteNode 获取 0 到 360 度的角度值
【发布时间】:2018-04-27 15:30:17
【问题描述】:

我旋转 SKSpriteNode。我需要以度为单位获取角度的值。我使用 SKNode zRotation:

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

文档说:

正值表示逆时针旋转。

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

【问题讨论】:

    标签: ios swift sprite-kit


    【解决方案1】:

    我的建议是你不应该按照你的建议去做。如果轮换结果是负数,那是因为它负数。但是,如果您真的想这样做,您可以这样做:如果结果是否定的,则添加 360。我们可以很容易地编写一个 CGFloat 扩展来解决这个问题:

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

    现在你的代码变成了

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

    【讨论】:

    • 谢谢。但 270 度和 -90 度在旋转方向上有所不同。如果您相信文档
    • 是的。这就是为什么我说不要把它从消极中改变。那是我说的第一件事希望此值介于 0 到 360 之间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-21
    • 2017-11-06
    相关资源
    最近更新 更多