[我试图弄清楚当我需要超过180度时应该如何在SKrotange中使用Zrotation。
这就是我所拥有的;
let higherlimit = CGFloat( 170 * 3.14 / 180 )
let lowerlimit = CGFloat( 0 * 3.14 / 180 )
let rotationRange = SKRange(lowerLimit: lowerlimit, upperLimit: higherlimit )
let rotationConstraint = SKConstraint.zRotation(rotationRange)
wheel.constraints = [rotationConstraint]
上面的方法效果很好,我无法将车轮旋转170度。但是,当我尝试以下操作时;
let higherlimit = CGFloat( -90 * 3.14 / 180 )
let lowerlimit = CGFloat( 0 * 3.14 / 180 )
let rotationRange = SKRange(lowerLimit: lowerlimit, upperLimit: higherlimit )
let rotationConstraint = SKConstraint.zRotation(rotationRange)
wheel.constraints = [rotationConstraint]
以上操作无效,它将车轮锁定在特定角度。我知道正弧度和负弧度,但是我不知道如何完成上述操作。
非常感谢,w //
我通过添加扩展名成功完成此操作;
取决于您的'口味'..
extension CGFloat {
var toDegreesNormalizedNegative : CGFloat {
let rad = -self
let deg = rad * 180 / .pi
return CGFloat(Int ( deg >= 0 ? deg : deg + 360 ))
}
}
extension CGFloat {
var toDegreesNormalized : CGFloat {
let deg = self * 180 / .pi
return CGFloat(Int ( deg >= 0 ? deg : deg + 360 ))
}
}
然后只需签入update(_ ..或touchesBegan或其他内容,使其不会超出要求的限制]