【发布时间】:2019-05-02 05:22:34
【问题描述】:
假设我有 2 个SCNNodes node1 和 node2。
我希望 node1 的位置为node1.position = SCNVector3(0, 0, 0)
我希望 node2 的位置为node2.position = SCNVector3(0, 0, 1)
现在,我希望 node2 围绕 node1 旋转。因此,我尝试这样做,node2.pivot = self.phone.pivot = SCNMatrix4MakeTranslation(0, 0, -1)。
这提供了它围绕 node1 旋转的位置,这样如果我将 node2 旋转 Pi/2,那么它就在节点的顶部,即,如果我旋转 node1.rotate(Double.pi/2, 0, 0),它实际上是在 node1 的顶部。
如何在 ndoe2 围绕 node1 旋转的位置获得它?
编辑1:
self.container = SCNNode()
self.container.position = SCNVector3(0, 0, 0)
self.node2 = SCNNode(geometry: geom2)
self.node2.position = SCNVector3(0, 0, 1)
self.container.addChildNode(self.node2)
let constraint = SCNLookAtConstraint(target: self.node2)
constraint.isGimbalLockEnabled = false
self.node1 = SCNNode(geometry: geom)
self.node1.position = SCNVector(0, 0, 0)
self.node1.constraints = [constraint]
Node1 从不移动,因为 node2 从不移动。即,node2 将始终位于位置(0, 0, 1),因为容器是唯一旋转的东西。
【问题讨论】:
-
我刚刚在操场上进行了测试,正如预期的那样,node1 确实与 node2 一起旋转
-
见鬼,我会再试一次,哈哈。
-
你的工作是不可能的...
node2永远不会移动,因为它总是在位置上。我在操场上,正如预期的那样,当我旋转时,node2会旋转,但是,node1不会移动。node2卡在位置(0, 0, 1)并且从未真正移动过。因此,node1永远不会旋转。
标签: swift rotation pivot scenekit scnnode