SceneKit中的allowRotation?

时间:2014-10-08 16:12:01

标签: ios8 scenekit

如何禁止在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”。

4 个答案:

答案 0 :(得分:6)

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

这可能比在不同值之间切换质量更好 - 这种方法看起来可能是非预期的行为,因此您可能不想依赖它。

答案 1 :(得分:0)

如果您想混合物理模拟和手动变换,请务必使用&#34; kinematicBody&#34;而不是&#34; dynamicBody&#34;。

答案 2 :(得分:0)

Ahaha,我发现了一些解决这个问题的bug(但这是一个bug,所以很奇怪)

  1. 创建节点
  2. set mass = 1
  3. 将节点添加到场景
  4. set mass = 0 - 这使它静止且不可移动,但是......
  5. 设置质量= 1 - 这会使其动态,跳跃和下降,但固定旋转!
  6. iOS 8.0.2 iPad mini

答案 3 :(得分:-1)

简单的解决方案:

node.physicsBody?.allowsRotation = false