2014-09-25 1 views
1

두 개의 상자가 있습니다. 상단 상자에는 동적 physicsBody가 첨부되어 있습니다. 하단 상자에는 정적 바디가 부착되어 있습니다.노드의 지오메트리와 동일한 크기로 physicsShape 만들기

physicShapes 함께 만들어집니다

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

가 나머지에 올 때, 상단에있는 상자에 physicsShape은 그것이 있어야보다 큰 것을 제안, 그것이 있어야보다 높은 수준이다. 이 휴식의 목적입니다 :

enter image description here

당신이 첨부하고자하는 노드의 구조로 어떻게 당신이 physicsShape에게 같은 크기/모양을 만들 수 있습니까?

FYI : SCNScene은 치타 3D에서 가져온 가져온 DAE 파일에서 가져온 것입니다.

+0

를 사용하여

sceneView.debugOptions = .showPhysicsShapes 

그래서 아래의 코드 도움이 조금 : 당신은 .showPhysicsShapes 디버그 옵션을 설정하여이를 확인할 수 있습니까? –

+0

아니요. 가져온 DAE 개체에서 올바르게 작동하지 못했습니다. –

답변

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)