如何阻止我的角色在 zRotation 约束下过度旋转?

Posted

技术标签:

【中文标题】如何阻止我的角色在 zRotation 约束下过度旋转?【英文标题】:How to stop my character from over rotating with zRotation constraints? 【发布时间】:2017-06-30 19:36:39 【问题描述】:

我正在开发一款平台游戏中的载具,我希望它能够允许旋转,以便它可以滚上山坡等。我想将我的车辆限制在正负方向旋转 30 度。

问题是当我启用旋转并从悬崖上滚下或从直边下落时,我的车辆从侧面翻转并落在其头上。我一直在寻找一种方法来将 zRotation 限制在每个方向上设定的度数。

我尝试在我的更新函数中使用本教程中的 IK 约束部分:https://www.raywenderlich.com/129895/sprite-kit-inverse-kinematics-swift-2,但没有效果。

然后我发现了这个:https://developer.apple.com/documentation/spritekit/skconstraint/1519706-zrotation#declarations

这似乎正是我所需要的,但我无法完全弄清楚如何实现它。任何建议将不胜感激!

【问题讨论】:

使用zRotation 属性时,请确保为它分配一个弧度值...如果这不是问题,请发布相关代码.. 我不知道我需要什么代码。我知道 zRotation 以弧度为单位,但 IK 约束以度为单位。我更感兴趣的是了解如何使用限制旋转的苹果 zRotation 函数。 【参考方案1】:

这应该可以解决问题:

  let thirtyDegrees = CGFloat(0.523599) // Convert degrees to rads.

  let rotationRange = SKRange(lowerLimit: -thirtyDegrees, upperLimit: thirtyDegrees)

  let rotationConstraint = SKConstraint.zRotation(rotationRange)

  let vehicle = SKSpriteNode()

  vehicle.constraints = [rotationConstraint]

【讨论】:

我把它放在我的播放器类中,效果很好。谢谢!

以上是关于如何阻止我的角色在 zRotation 约束下过度旋转?的主要内容,如果未能解决你的问题,请参考以下文章

尝试按下按钮将精灵的 zRotation 增加 1 度时旋转不正确

Swift SpriteNode 初始角度

如何阻止 Go gorm 在 Postgres 中对我的自引用外键强制非空约束

mySQL:是啥阻止了我的外键约束?

Interface Builder 运行时自动布局约束阻止视图占用固有大小,我该如何解决这个问题?

外键约束阻止插入