创建与节点几何尺寸相同的物理形状

Gra*_*col 1 ios scenekit swift

我有两个盒子。顶部的框具有连接的动态PhysicalBody,底部的框具有连接的静态主体。

physicShapes使用以下方法创建:

topBox.physicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.Dynamic, shape: nil)
bottomBox.physicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.Static, shape: nil)
Run Code Online (Sandbox Code Playgroud)

当它们静止时,顶部的框比应有的高,这表明PhysicalShape大于应有的形状。这是静止的对象:

在此处输入图片说明

如何创建与要附加节点的几何形状相同的大小/形状的物理形状?

仅供参考:该SCNScene文件来自从Cheetah 3D导出的导入DAE文件。

Mot*_*oko 5

尽管从头开始创建形状,但我遇到了同样的问题。我认为问题是将创建一个默认SCNPhysicsShape.ShapeType值。这总是比盒子大。您可以通过打开调试选项来确认这一点:convexHullconvex polyhedron roughly enclosing the geometry.showPhysicsShapes

sceneView.debugOptions = .showPhysicsShapes
Run Code Online (Sandbox Code Playgroud)

所以下面的代码通过使用.boundingBoxoption 有所帮助

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)
Run Code Online (Sandbox Code Playgroud)

  • 先生,您是人间神。谢谢。非常非常感谢。 (2认同)