如何在scenekit中进行冲突

时间:2015-01-06 09:18:17

标签: ios swift scenekit

我正在尝试使两个对象发生碰撞,但“func physicsWorld(世界:SCNPhysicsWorld,didBeginContact contact: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: {

    })

1 个答案:

答案 0 :(得分:3)

你无法移动"动态"以编程方式(即没有动作,没有动画,没有位置/旋转/比例的手动更新)。您可以使用力移动动态物体,也可以使用kinematicBody。 运动体的行为就像静态物体一样,但您可以通过编程方式移动它们。

另外,如果你想在两个节点之间获得物理接触,那么这两个节点需要有一个物理体。