我目前正在使用ARKit制作Scenekit游戏。
我有两个动态SCNNode,当它们彼此联系时,它们会彼此通过。
我已经将每个节点的物理物体的冲撞位面具设置为彼此包含,如下所示:
ballNode.physicsBody?.collisionBitMask = BodyType.floor.rawValue | BodyType.opponent.rawValue
我还将每个节点的物理主体设置为动态的,以使该节点受力和碰撞的影响。
当我调用physicsWorld(_ world: SCNPhysicsWorld, didBegin contact: SCNPhysicsContact)
时,它确实正确地注册了两个节点之间存在冲突,但是这些节点继续彼此通过。
当我使一个节点运动时,它不是动态的,而是正确地阻塞了另一个节点,并且它们彼此之间不会通过。但是,当它是运动学的时,它不会响应我施加给它的力,因此我想使其保持动态。
是否有可能使两个动态节点相互碰撞而不经过?
答案 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:)