两个动态SCNNode不冲突(Scenekit)

时间:2018-06-27 16:26:08

标签: ios swift scenekit arkit scnnode

我目前正在使用ARKit制作Scenekit游戏。

我有两个动态SCNNode,当它们彼此联系时,它们会彼此通过。

我已经将每个节点的物理物体的冲撞位面具设置为彼此包含,如下所示:

ballNode.physicsBody?.collisionBitMask = BodyType.floor.rawValue |  BodyType.opponent.rawValue

我还将每个节点的物理主体设置为动态的,以使该节点受力和碰撞的影响。

当我调用physicsWorld(_ world: SCNPhysicsWorld, didBegin contact: SCNPhysicsContact)时,它确实正确地注册了两个节点之间存在冲突,但是这些节点继续彼此通过。

当我使一个节点运动时,它不是动态的,而是正确地阻塞了另一个节点,并且它们彼此之间不会通过。但是,当它是运动学的时,它不会响应我施加给它的力,因此我想使其保持动态。

是否有可能使两个动态节点相互碰撞而不经过?

1 个答案:

答案 0 :(得分:0)

我认为缺少“ physicsShape”,因此声明为“ nil”

geometryNode.physicsBody = SCNPhysicsBody(type: .Dynamic, shape: nil)

相反:

let pShape = SCNPhysicsShape(geometry: SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0.0), options: [:])
boxNode.physicsBody = SCNPhysicsBody(type: .Dynamic, shape: pShape)

希望对您有所帮助,请发布代码。

创建形状的另一种方法是init(node:options:)