Spritekit SKRange Zrotation SKConstraint上下限减去正弧度

问题描述 投票:0回答:1

[我试图弄清楚当我需要超过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 //

sprite-kit
1个回答
0
投票

我通过添加扩展名成功完成此操作;

取决于您的'口味'..

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或其他内容,使其不会超出要求的限制]

© www.soinside.com 2019 - 2024. All rights reserved.