2015-01-06 35 views
1

我正在嘗試使兩個對象發生碰撞,但未調用「func physicsWorld(world: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: { 

    }) 
+0

感謝vaibhav,請參閱http://www.raywenderlich.com/83748/beginning-scene-kit-tutorial –

+0

,但本教程並未教導碰撞(兩個物體的接觸) – Chola

回答

3

無法移動「動態」身體編程方式(即沒有動作,沒有動畫和位置/旋轉/縮放沒有手動更新)。您可以使用力量移動動態物體,也可以使用kinematicBody。運動物體的行爲與靜態物體類似,但可以通過編程方式移動它們。

此外,如果你想獲得兩個節點之間的物理接觸,這兩個節點需要有一個physicsBody。

+0

didBeginContact未被調用,即使它沒有動態的身體。 – Chola

+1

你的兩個節點有沒有物理體? – Toyos

+0

具體而言,一個動態的理想物體(現在)碰撞類別,掩碼都保留默認值 – LearnCocos2D