我的场景包含;
场景根部的静态物体
_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的子节点,因此pivot位于静态节点的中心。我们的想法是运行一个SCNAction,围绕_firstNode围绕它的X轴旋转_secondNode,并根据需要使用applyTorque围绕它的Y轴旋转。
目前这段代码很好,问题是当_firstNode保持静态时,它会将_secondNode.pivot推送到_firstNode几何体的表面。然而,简单地解决_firstNode的physicsBody也无法解决问题。
答案 0 :(得分:0)
听起来它在试图旋转时会产生太大的摩擦力。尝试将angularDamping设置为0.默认值为0.1。 angularDamping模拟物体旋转时的摩擦力。值0表示没有摩擦(永久旋转)。值1.0基本上模拟100%摩擦或静电。
像这样设置......
yourNode.physicsBody.angularDamping = 0