我的场景包含;
场景根部的静态物体
_firstNode = [[SCNNode alloc] init];
_firstNode.position = SCNVector3Make(0, 0, 0);
_firstNode.geometry = [SCNSphere sphereWithRadius:950];
_firstNode.geometry.firstMaterial.diffuse.contents = [UIColor greenColor];
_firstNode.physicsBody = [SCNPhysicsBody staticBody];
[[scene rootNode] addChildNode:_firstNode];
一个动态体,其轴属性位于 (0,-1200,0)
_secondNode = [[SCNNode alloc] init];
_secondNode.position = SCNVector3Make(0, 0, 0);
_secondNode.pivot = SCNMatrix4MakeTranslation(0, -1200, 0);
_secondNode.physicsBody = [SCNPhysicsBody dynamicBody];
_secondNode.physicsBody.physicsShape = [SCNPhysicsShape shapeWithGeometry:[SCNSphere sphereWithRadius:2] options:nil];
[[scene rootNode] addChildNode:_secondNode];
由于两个节点都是 rootNode 的子节点,因此枢轴位于静态节点的中心。这个想法是运行一个 SCNAction,它围绕 _firstNode 围绕它的 X 轴旋转 _secondNode,并根据需要围绕它的 Y 轴旋转 applyTorque。
这段代码目前很好,问题是当 _firstNode 保持静态时,它会将 _secondNode.pivot 推到 _firstNode 几何体的表面。然而,简单地将_firstNode 的physicsBody 带走也不能解决问题。