2014-09-25 79 views
1

我有兩個方框。機頂盒上有一個動態的物理機體,底部有一個靜態物體連接到它。創建一個與節點幾何尺寸相同的physicsShape

的physicShapes與創建:

topBox.physicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.Dynamic, shape: nil) 
bottomBox.physicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.Static, shape: nil) 

當他們下場休息,在箱體頂部高於它應該是,這表明physicsShape大於它應該是。這是在休息的對象:

enter image description here

如何創建一個physicsShape相同的大小/形狀作爲節點的幾何形狀要附加到?

供參考:SCNScene來自導入的DAE文件,從Cheetah 3D導出。

+0

sceneView.debugOptions = .showPhysicsShapes 

所以下面的代碼有點幫助你曾經能夠解決這個問題:您可以通過打開.showPhysicsShapes調試選項證實了這一點? – 2014-11-10 03:50:31

+0

不能。我無法使其從導入的DAE對象正常工作。 – 2014-11-11 06:37:56

回答

0
SCNBox* JustAHappyBox=[SCNBox boxWithWidth:1 height:1 length:1 chamferRadius:0]; 

SCNNode* TopBoxNode=[SCNNode nodeWithGeometry:JustAHappyBox]; 

SCNPhysicsShape* TopBoxPhysicsShape=[SCNPhysicsShape shapeWithGeometry:JustAHappyBox options:@{SCNPhysicsShapeTypeKey:SCNPhysicsShapeTypeConvexHull }]; 

SCNPhysicsBody* TheBoxBody=[SCNPhysicsBody bodyWithType:SCNPhysicsBodyTypeDynamic shape:TopBoxPhysicsShape]; 

[TopBoxNode setPhysicsBody:TheBoxBody]; 

希望這有助於。

Btw現場套件存在問題,它們識別出它們來自.dae的Colision體,它與視覺幾何體和碰撞幾何體的轉換有關。不適合玩一下它,如果我覺得生病讓你知道。

0

儘管從頭開始創建形狀,但我遇到了同樣的問題。我認爲這個問題是SCNPhysicsShape.ShapeType的默認值convexHull會創建一個convex polyhedron roughly enclosing the geometry。這總是比一個盒子大。通過使用.boundingBox選項

let boxBodyShape = SCNPhysicsShape(geometry: SCNBox(width: 1, height: 1, length: 1, chamferRadius: 0), 
          options: [SCNPhysicsShape.Option.type: SCNPhysicsShape.ShapeType.boundingBox]) 
    let boxBody = SCNPhysicsBody(type: .kinematic, shape: boxBodyShape)