2017-06-03 19 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和。主要以任何他们实际上是被称为