2017-06-03 14 views
1

我有兩個節點,我想檢測到它們之間的衝突,但由於某些原因didBegin接觸不會被調用在斯威夫特

func didBegin(_ contact: SKPhysicsContact) {

不會被調用。

這是一個球和一個槳:

ball.physicsBody?.categoryBitMask = 2 
ball.physicsBody?.contactTestBitMask = 2   
ball.physicsBody?.isDynamic = true 

main.physicsBody?.categoryBitMask = 1 
main.physicsBody?.contactTestBitMask = 1 
main.physicsBody?.isDynamic = false 

_

func didBegin(_ contact: SKPhysicsContact) { 
     print("Collision") //Obviously this will be better in future, but I need to detect collision for a start 
} 

當球來回移動時,它反彈的槳,但我需要能夠檢測到。

謝謝

回答

0

這不是你放在一個開始接觸。你需要知道哪些物理機構正在聯繫。把這個英寸

func didBegin(_ contact: SKPhysicsContact) { 
    let firstBody = contact.bodyA 
    let secondBody = contact.bodyB 

    if firstBody.categoryBitMask == PhysicsCategory.ball && secondBody.categoryBitMask == PhysicsCategory.main || firstBody.categoryBitMask == PhysicsCategory.main && secondBody.categoryBitMask == PhysicsCategory.ball { 

     //whatever you want to do after the contact happens 

    } 
} 

而且明顯變化PhysicsCategory.ball和。主要以任何他們實際上是被稱爲