在我的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
    }
}

最佳答案

为了检测碰撞,您必须设置contactTestBitMaskphysicsBody
当对两个整数应用二进制和运算以触发检测时,acontactTestBitMaskphysicsBodys和另一个categoryBitMaskphysicsBodys必须不为0。
如果还没有,请确保场景的physicsWorld.contactDelegate设置为self,并且它实现了SKPhysicsContactDelegate

10-08 02:46