我的场景包含;
场景根部的静态物体
_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,-1000,0),SCNAction
永久地围绕静态主体旋转。
_secondNode = [[SCNNode alloc] init];
_secondNode.position = SCNVector3Make(0, 0, 0);
_secondNode.pivot = SCNMatrix4MakeTranslation(0, -1200, 0);
_SecondNode.physicsBody = [SCNPhysicsBody dynamicBody];
_secondNode.geometry = [SCNSphere sphereWithRadius:2];
_secondNode runAction:[SCNAction repeatActionForever:[SCNAction rotateByX:-1 y:0 z:0 duration:10.0]]];
[[scene rootNode] addChildNode:_secondNode];
当我尝试申请时;
[_secondNode.physicsBody applyTorque:SCNVector4Make(0, 1, 0, 1) impulse:YES];
对节点没有任何影响,就像它被声明为静态体一样。
答案 0 :(得分:0)
如果我正在阅读您想要的内容,请将您的第二个节点设置为......
_secondNode.position = SCNVector3Make(0,-1200,0);
这将从firstNode
中设置它然后设置它的轴心点......
_secondNode.pivot = _firstNode.pivot;
这将枢轴设置为与firstNode相同的位置,并允许它围绕该点旋转。只有在您的firstNode pivot属性未更改时,此方法才有效。
最后设置你的动作......
SCNAction rotateByX:M_PI*2 y:0 z:0 duration:10.0
注意到我将x设置更改为M_PI * 2,等于360度。您可以使用" -M_PI"以相反的方式旋转。
答案 1 :(得分:0)
对于物理模拟节点,需要分配physicsShape,这是通过;
实现的 _secondNode.physicsBody.physicsShape = [SCNPhysicsShape shapeWithGeometry:[SCNSphere sphereWithRadius:2] options:nil];