我设法创建了一个树,程序应该只允许用户水平旋转这个树。
查看文档后,我使用以下代码
treeNode.physicsBody?.angularVelocityFactor = SCNVector3Make(0, 0, 1.0)
但这没有做任何事情,我仍然可以向各个方向旋转树。
限制节点仅在水平方向旋转的正确方法是什么?
答案 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)。