场景工具包:如何​​使SCNNode仅在Swift 2.0中水平旋转

时间:2015-12-07 12:21:56

标签: swift swift2 scenekit

我设法创建了一个树,程序应该只允许用户水平旋转这个树。

查看文档后,我使用以下代码

treeNode.physicsBody?.angularVelocityFactor = SCNVector3Make(0, 0, 1.0)

但这没有做任何事情,我仍然可以向各个方向旋转树。

限制节点仅在水平方向旋转的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

你真的试图限制节点的旋转吗?或者您想限制相机的旋转?

如果是前者,你必须提供更多关于身体物理和结构的细节。使用SCNPhysicsHingeJoint的方法似乎可行。

let joint = SCNPhysicsHingeJoint.init(body: treeNode, 
                                      axis: SCNVector3Make(0, 0, 1.0), 
                                      anchor: SCNVector3Make(xpos, ypos, zpos))

但是,如果您只是想控制相机,则应关闭allowsCameraControl的{​​{1}}。这仅适用于快速和肮脏的测试。然后,您可以实现此处描述的技术(Rotate SCNCamera node looking at an object around an imaginary sphere)并在此处进行修改(SCNCamera limit arcball rotation)。