0

次のように作成された childNode として SCNNode を持つノード (nodeCollection) があります。

let boxGeo = SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0.0)
let node = SCNNode(geometry: boxGeo)
node.physicsBody = SCNPhysicsBody.staticBody()

また、次のように redbox ノードを作成しています。

let redBox = SCNNode()
redBox.geometry = SCNBox(width: 0.5, height: 0.5, length: 0.5, chamferRadius: 0.1)
redBox.geometry?.firstMaterial?.diffuse.contents = UIColor.redColor()
redBox.position = SCNVector3Make(0, 1, -2)
redBox.physicsBody = SCNPhysicsBody.dynamicBody()

次に、以下のコードを実行してノードを回転させます

let rotateAction = SCNAction.rotateByAngle(CGFloat(M_PI_2), aroundAxis: SCNVector3Make(0, 0, 1), duration: 0.15)
rotateAction.timingMode = .EaseInEaseOut
nodeCollection.runAction(rotateAction)

次に、nodeCollection と redBox の両方を childNodes として SCNScene に追加します。

しかし、nodeCollection で回転を実行するとわかるように、redBox の物理は保持されません。 赤いボックスが停止して青いボックスの上に置かれるときに、赤いボックスがシーンにドロップされると、物理が機能します。

青いボックスが回転したときに redBox を突き抜けないようにするにはどうすればよいですか?

ここに画像の説明を入力

4

1 に答える 1

2

青いボックスの physicalsBody タイプを に変更してみてくださいkinematic。静的なボディは移動しないはずです。

さまざまなタイプについては、 https ://developer.apple.com/library/ios/documentation/SceneKit/Reference/SCNPhysicsBody_Class/#//apple_ref/c/tdef/SCNPhysicsBodyType で説明しています。

于 2016-09-01T09:31:24.030 に答える