0

私のシーンには以下が含まれます。
シーンのルートにある静止体

_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];

ノードが静的なボディとして宣言されているかのように、ノードに影響はありません。

4

2 に答える 2

0

物理演算でノードをシミュレートするには、physicsShape が割り当てられている必要があります。

_secondNode.physicsBody.physicsShape = [SCNPhysicsShape shapeWithGeometry:[SCNSphere sphereWithRadius:2] options:nil];

于 2014-08-03T11:25:59.773 に答える
0

必要なものを正しく読んでいる場合は、2番目のノードを次のように設定してください...

_secondNode.position = SCNVector3Make(0,-1200,0);

これにより、firstNode からオフセットされます

次に、ピボットポイントを次のように設定します...

_secondNode.pivot = _firstNode.pivot;

これにより、ピボットが firstNode と同じ場所に設定され、そのポイントを中心に回転できるようになります。これは、firstNode ピボット プロパティが変更されていない場合にのみ機能します。

最後にあなたの行動をそのように設定してください...

SCNAction rotateByX:M_PI*2 y:0 z:0 duration:10.0

x 設定を 360 度に等しい M_PI*2 に変更したことに気付きました。「-M_PI」を使用すると、反対方向に回転できます。

于 2014-07-28T01:33:50.627 に答える