2015-01-06 4 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

이 참조하십시오 http://www.raywenderlich.com/83748/beginning-scene-kit-tutorial –

+0

감사합니다 vaibhav,하지만이 튜토리얼은 충돌에 대해 가르치지 않습니다. (두 객체의 접촉) – Chola

답변

3

(즉 어떤 행동, 어떤 애니메이션과 위치/회전/스케일없이 수동 업데이트). 강제로 동적 몸체를 움직이거나 대신에 kinematicBody를 사용할 수 있습니다. 키네마 틱 바디는 정적 바디와 똑같이 동작하지만 프로그래밍 방식으로 움직일 수 있습니다.

두 노드 사이의 물리 접촉을 원한다면 두 노드에 physicsBody가 있어야합니다.

+0

didBeginContact가 호출되지 않았습니다. , 심지어 그것은 역동적 인 몸을 가지고 있지 않습니다. – Chola

+1

두 노드에 물리가 있습니까? – Toyos

+0

구체적으로, 동적 카테고리이며 이상적으로 (현재는) 충돌 카테고리이며, 마스크는 모두 기본값으로 남아 있습니다. – LearnCocos2D

관련 문제