物理力量不影响动态身体Scenekit

时间:2014-07-27 01:45:29

标签: ios game-physics 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,-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];

对节点没有任何影响,就像它被声明为静态体一样。

2 个答案:

答案 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];