2016-03-23 26 views
0

SCNBoxとSCNPyramidなどを組み合わせてカスタムシェイプを作成する場合と同様に、適切な位置と形状を設定することでそれらをまとめることができます。物理的な世界で修正したり反応させたりできる単一のユニットとして、それらを組み合わせる方法を見つけられません。 以下のコードは、シンプルな家形SCNNodeを作成したいものです。衝突や重力の影響を受けると、ノードは互いに接続したいと思います。 誰かがヒントを教えてもらえますか?2つ以上のSCNGeometry/SCNNodeを1つに結合する方法

let boxGeo = SCNBox(width: 5, height: 5, length: 5, chamferRadius: 0) 
    boxGeo.firstMaterial?.diffuse.contents = UIColor.blueColor() 

    let box = SCNNode(geometry: boxGeo) 
    box.position = SCNVector3Make(0, -2.5, 0) 
    scene.rootNode.addChildNode(box) 

    let pyramidGeo = SCNPyramid(width: 7, height: 7, length: 7) 
    pyramidGeo.firstMaterial?.diffuse.contents = UIColor.greenColor() 

    let pyramid = SCNNode(geometry: pyramidGeo) 
    pyramid.position = SCNVector3Make(0, 0, 0) 
    scene.rootNode.addChildNode(pyramid) 

enter image description here

答えて

1

コンテナノード、任意の形状せず、単に空のノードを作ります。それはあなたが構築しているように見えるので、それを "houseNode"と呼ぶことにしましょう。

let houseNode = SCNNode() 

ここで、他の2つのノードに子を作ります。

houseNode.addChildNode(pyramid) 
houseNode.addChildNode(box) 

これで、2つの結合されたノードを操作したいときはいつでも、コンテナノードを使用します。

編集:あなたが列挙して、コンテナ内のオブジェクトの形状に変化をもたらすことができる:

houseNode.enumerateChildNodesUsingBlock({ 
     node, stop in 
     // change the color of all the children 
     node.geometry?.firstMaterial?.diffuse.contents = UIColor.purpleColor() 
     // I'm not sure on this next one, I've yet to use "physics". 
     houseNode.physicsBody?.affectedByGravity = true 
    }) 
+0

houseNode.geometry?.firstMaterial?.diffuse.contents = UIColor.purpleColor() houseNode.physicsBody?.affectedByGravity =真 – NEO

+0

私はちょうどこの、上記のコードのように、その色やphysicsBodyを変更したい場合動作しません! houseNodeのジオメトリとphysicsShapeがまだ定義されていないからです。そして、それは私が見つけ出すことです。 – NEO

+0

コンテナは、ポジショニング、オリエンテーション、ムーブなどに便利です。あなたが望むものについては、私が上で追加した編集された提案を試してみてください。私はまだ物理エンジンを使用していない、私は提案のその部分についてはわからない。 – bpedit

1

おかげでbpedit!

childNodesメソッドとそれをphysicsShapeに設定する次のコードでは、解決策が見つかりました。

 houseNode.physicsBody = SCNPhysicsBody(type: .Dynamic, 
             shape: SCNPhysicsShape(node: houseNode, 
             options: [SCNPhysicsShapeKeepAsCompoundKey: true])) 
+0

このSCNPhysicsShapeは、SCNBoxのように作成された通常のSCNPhysicsShapeと同じではありません。その結果、これは動態のボディタイプに少ししか付いていなければhouseNodeが落ちないという奇妙な現象があります。まだそれに取り組んでいます。 – NEO

関連する問題