我正在尝试使两个对象发生碰撞,但是未调用“func physicsWorld(世界:SCNPhysicsWorld,didBeginContact联系人:SCNPhysicsContact)”。
我的代码是
let carbonNode = SCNNode(geometry: carbonAtom())
carbonNode.position = SCNVector3Make(-6, 8, 0)
let coneAtomNode = SCNNode(geometry: coneAtom())
pinNode = coneAtomNode
pinNode.physicsBody = SCNPhysicsBody.dynamicBody()
pinNode.physicsBody?.restitution = 0.9;
pinNode.categoryBitMask = 0x4;
pinNode.physicsBody?.collisionBitMask = ~(0x4);
coneAtomNode.position = SCNVector3Make(-6, -15, 0)
scene.rootNode.addChildNode(coneAtomNode)
balloonNode = carbonNode
sceneView.scene = scene
sceneView.scene?.physicsWorld.contactDelegate = self
pinNode.runAction(SCNAction.repeatAction(SCNAction.moveTo(SCNVector3Make(-6, 10+5, 0), duration: 1.5), count: 1), completionHandler: {
})
最佳答案
您不能以编程方式移动“动态”身体(即,没有动作,没有动画并且没有位置/旋转/比例的手动更新)。您可以用力移动动态物体,也可以使用kinematicBody。
运动物体的行为就像静态物体一样,但是您可以通过编程方式移动它们。
同样,如果要在两个节点之间获得物理接触,则两个节点都需要有一个PhysicalBody。