0

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

1 回答 1

1

为了检测碰撞,您必须设置contactTestBitMask.physicsBody

当对 2 个整数应用二进制 AND 运算以触发检测时contactTestBitMask,aphysicsBodys的 thecategoryBitMask和 another的 the 必须不为 0。physicsBodys

如果您还没有,请确保physicsWorld.contactDelegate场景的 设置为self并且它实现了SKPhysicsContactDelegate.

于 2016-10-20T15:15:35.317 回答