ios - SKSpriteNode 获取0到360度的角度值

标签 ios swift sprite-kit

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

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

文档说:

A positive value indicates a counterclockwise rotation.

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

最佳答案

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

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

现在你的代码变成了

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

关于ios - SKSpriteNode 获取0到360度的角度值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50065708/

相关文章:

ios - 通过您自己的 iOS 应用程序将照片上传到 Instagram

swift - 我应该将 .swiftpm 添加到 gitignore 吗?

ios - SKShapeNode - 动画颜色变化

ios - 我在 SKAction playSoundFileNamed 上做错了什么,所以它会播放 .wavs 而不是 .mp3s?

ios - 找不到占位符菜单

php - adobe air 应用程序中 iOs 开发的打包文件

ios - 在 UITextView 中快速将 'Return' 按钮功能更改为 'Done'

ios - 实例成员 'decode' 不能用于类型 'JSONDecoder' ;你是不是想改用这种类型的值

ios - AdMob区域隐藏后不可点击

ios - 使用 SpriteKit 创建一条直线