IK角度约束Swift

时间:2015-09-20 21:44:35

标签: swift sprite-kit

我正在尝试在Swift 2.0中为身体部位设置角度约束。

我尝试在IK约束下的场景编辑器中自动设置它们,但这失败了。

我随后在代码中设置了它们:

  lowerArmBack.reachConstraints?.lowerAngleLimit = 0
    lowerArmBack.reachConstraints?.upperAngleLimit = CGFloat(10)

两者都没有效果(有或没有CGFloat)。我正在尝试按照本教程进行操作:http://www.raywenderlich.com/80917/sprite-kit-inverse-kinematics-swift但是自从Swift更新以来,我们偶然发现了问题。

基本上我想限制角度以防止手臂在360度全方位移动,但这并没有发生。

1 个答案:

答案 0 :(得分:1)

您需要使用所需身体部位的范围设置zRotation约束:

let range = SKRange(lowerLimit: CGFloat(0).degreesToRadians(),
        upperLimit: CGFloat(160).degreesToRadians())
let rotationConstraint = SKConstraint.zRotation(range)
lowerArmFront.constraints = [rotationConstraint]

关于本教程,我实际上正在努力解决这个问题。

您还可以通过以下方式添加SKReachConstraint:

lowerLeg.reachConstraints = SKReachConstraints(lowerAngleLimit: CGFloat(-45).degreesToRadians(), upperAngleLimit: 0)
    upperLeg.reachConstraints = SKReachConstraints(lowerAngleLimit: CGFloat(-45).degreesToRadians(), upperAngleLimit: CGFloat(160).degreesToRadians())

希望它有所帮助!