我正在尝试在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度全方位移动,但这并没有发生。
答案 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())
希望它有所帮助!