当枢轴位于另一个节点的几何体内时,节点移动

时间:2014-08-01 12:33:12

标签: ios scenekit

我的场景包含;
场景根部的静态物体

_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也无法解决问题。

1 个答案:

答案 0 :(得分:0)

听起来它在试图旋转时会产生太大的摩擦力。尝试将angularDamping设置为0.默认值为0.1。 angularDamping模拟物体旋转时的摩擦力。值0表示没有摩擦(永久旋转)。值1.0基本上模拟100%摩擦或静电。

像这样设置......

yourNode.physicsBody.angularDamping = 0