SceneKit节点不会改变场景根节点的位置

我使用的是与ARKit的SceneKit,现在有一个简单的应用程序,我点击屏幕上,它添加一个ARAnchor和一个SCNNode到我的场景。

在某些时候,我想要移动整个场景,所以我试着改变sceneView.scene.rootNode.position.x += 10来testing。 如果我在任何特定的节点上调用这个节点,那么该节点确实适当地移动 但是在rootNode上调用它,没有任何反应,我期望每个子节点(它是场景中的每个节点)都随之移动。

为什么我的其他节点不能正常移动,有什么我可以做的解决这个问题? 还是我在想这个错误?

根据SCNScene.rootNode的文档:

您不应该修改根节点的transform属性。

根节点定义了世界坐标系的原点 – 所有其他的测量都是相对于它的。 因此,改变其位置,方向,规模或其变化的任何其他方面是没有意义的(并且经常是有问题的)。

如果要移动SceneKit场景中的所有内容,请创build一个包含所有其他节点的新节点,然后更改该节点的变换。 (对于由ARSCNView添加的节点,您不能这样做,因为ARKit会使这些根节点的直接子节点,但是这些节点的全部重点都放在了世界空间中。)

Interesting Posts