【问题标题】:allowRotation in SceneKit?SceneKit 中的允许旋转?
【发布时间】:2014-12-03 09:18:53
【问题描述】:

如何在 SceneKit 中禁止节点旋转?

例如,我希望模型(圆锥)是动态的、跳跃和飞行的,但始终是垂直方向的?

我尝试像在苹果的车辆演示中那样修复它,这是一个糟糕的解决方案。我也尝试了下面的代码,但模型只是缓慢而故障掉下来

- (void)renderer:(id<SCNSceneRenderer>)aRenderer didSimulatePhysicsAtTime:(NSTimeInterval)time{
    _node.rotation = SCNVector4Make(0, 0, 0, 0);
    //[_node.physicsBody resetTransform]; // - tried this too
}

...最后我在 scenekit 手册中没有找到任何“allowRotation=NO”。

【问题讨论】:

    标签: ios8 scenekit


    【解决方案1】:

    与 SpriteKit 中的布尔 allowsRotation 标志不同,SceneKit 允许您选择允许身体旋转的方向和旋转量。请参阅 angularVelocityFactor 属性。

    这可能比在不同值之间切换质量更好——这种方法看起来可能是意外行为,所以你可能不想依赖它。

    【讨论】:

    • 切换质量只是在开玩笑。 angularVelocityFactor 效果很好,谢谢
    【解决方案2】:

    如果您想混合物理模拟和手动变换,请确保使用“kinematicBody”而不是“dynamicBody”。

    【讨论】:

      【解决方案3】:

      啊哈哈,我发现了一些解决这个问题的错误(但这是一个错误,所以很奇怪)

      1. 创建节点
      2. 设置质量=1
      3. 向场景添加节点
      4. 设置 mass=0 - 这使它成为静态且不可移动的,但是...
      5. set mass=1 - 这使它动态,跳跃和下降,但固定旋转!

      iOS 8.0.2 iPad mini

      【讨论】:

        【解决方案4】:

        简单的解决方案:

        node.physicsBody?.allowsRotation = false

        【讨论】:

          猜你喜欢
          • 2015-10-31
          • 1970-01-01
          • 2018-06-05
          • 1970-01-01
          • 1970-01-01
          • 2015-07-10
          • 2018-01-31
          • 2017-07-31
          • 2018-12-17
          相关资源
          最近更新 更多