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,-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 の子であるため、ピボットは静的ノードの中心にあります。アイデアは、X 軸を中心に _firstNode を中心に _secondNode を回転させる SCNAction を実行し、必要に応じて Y 軸を中心に回転するために applyTorque を実行することです。

そのコードは今のところ問題ありません。問題は、_firstNode は静的なままですが、_secondNode.pivot を _firstNode のジオメトリの表面にプッシュしていることです。ただし、単に _firstNode の physicalsBody を取り除いても、問題は解決しません。

4

1 に答える 1

1

回転しようとするので、摩擦が大きすぎるように聞こえます。angularDamping を 0 に設定してみてください。デフォルトは 0.1 です。angularDamping は、オブジェクトが回転するときの摩擦の量をシミュレートします。0 の値は、摩擦をシミュレートしません (永遠にスピンします)。1.0 の値は、基本的に 100% の摩擦または静的をシミュレートします。

そのように設定してください...

yourNode.physicsBody.angularDamping = 0
于 2014-08-03T13:31:32.353 に答える