【问题标题】:Scene Kit: How to make SCNNode only rotate horizontally in Swift 2.0Scene Kit:如何让 SCNNode 在 Swift 2.0 中只水平旋转
【发布时间】:2015-12-09 04:39:20
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 这不限制节点的旋转,只限制物理引擎应用旋转的能力。树的旋转是如何改变的?你能在那个时候添加一个限制吗?

标签: swift swift2 scenekit


【解决方案1】:

你真的想限制节点的旋转吗?还是要限制相机的旋转?

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

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

不过,如果您只是想控制摄像头,您应该关闭 allowsCameraControlSCNView。这仅对快速而肮脏的测试有用。然后,您可以实现此处描述的技术 (Rotate SCNCamera node looking at an object around an imaginary sphere) 并在此处修改 (SCNCamera limit arcball rotation)。

【讨论】:

  • 对不起,对节点的旋转和节点相机的移动感到困惑。我希望一个特定的节点只在水平方向上旋转。我可以使用相机实现这一点吗?
  • 没有。但是SCNPhysicsHingeJoint 可能就是您所追求的。从您在问题中所写的内容来看,我无法确切地弄清楚您要做什么。
猜你喜欢
  • 2017-12-26
  • 2014-10-08
  • 2018-01-20
  • 2015-03-04
  • 2012-08-14
  • 2015-03-01
  • 2021-12-25
  • 2017-08-28
相关资源
最近更新 更多