let physicsShape = SCNPhysicsShape(geometry: cloneNode.geometry!, options: [SCNPhysicsShape.Option.type : SCNPhysicsShape.ShapeType.boundingBox])
let physicsbody = SCNPhysicsBody(type: .dynamic, shape: physicsShape)
physicsbody.isAffectedByGravity = true
physicsbody.angularDamping = 1
cloneNode.physicsBody = physicsbody
sceneView.scene.rootNode.addChildNode(cloneNode)
但是物理物体与网格不匹配,因此它悬停在面板上
请帮助我解决这个问题,我还使用了凹面多面体-在这种情况下,它可以创建精确的形状,但是不能将对象声明为动态的。 ????
答案 0 :(得分:1)
感谢您的回答max9xs
迅速4的答案如下
boxNode.boundingBox.min = SCNVector3(0.0,0.0,0.0)
boxNode.boundingBox.max = SCNVector3(1.0,1.0,1.0)
这将更改对象的边界框。
答案 1 :(得分:0)
只有在您的某些角顶点没有面或没有应用其他填充的情况下,才应该发生这种情况。
您可以通过以下代码启用“调试选项”,并检查边界框是否与物理形状边界匹配。
scnView.debugOptions = SCNDebugOptionShowBoundingBoxes | SCNDebugOptionShowPhysicsFields | SCNDebugOptionShowWireframe;
您还可以使用以下代码手动为几何设置边界框
SCNVector3 v1=SCNVector3Make(0, 0, 0);
SCNVector3 v2=SCNVector3Make(5, 5, 5);
[boxCharacter setBoundingBoxMin:&v1 max:&v2];