SpriteKit没有调用EndEtaContact

时间:2016-10-20 14:01:10

标签: swift xcode sprite-kit skphysicscontact

在我的didEndContact:方法中,我增加了“currentScore”。

出于某种原因, didEndContact:未被调用,因此“currentScore”未递增。任何想法为什么或我应该寻找什么来调试这个?

func didEndContact(contact: SKPhysicsContact) {
    guard goal!.barEnabled else { return }
    score += 1
}

以下是相关代码,如果我还可以添加任何其他有用的详细信息,请告诉我:

var barEnabled:Bool {
    set {
        bar?.physicsBody?.collisionBitMask = newValue ? CollisionMask.Puck : CollisionMask.None
        bar?.physicsBody?.categoryBitMask = newValue ? CollisionMask.Goal : CollisionMask.None
    }
    get {
        return bar?.physicsBody?.collisionBitMask == CollisionMask.Puck
    }
}

1 个答案:

答案 0 :(得分:1)

为了检测碰撞,您必须设置contactTestBitMask的{​​{1}}。

当二进制AND操作应用于2个整数以进行检测时,physicsBody的{​​{1}}和另一个contactTestBitMask的{​​{1}}必须不为0触发。

如果您还没有,请确保将场景的physicsBodys设置为categoryBitMask并确保其实现physicsBodys