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

検出をトリガーするには、バイナリ AND 演算を 2 つの整数に適用するときに、contactTestBitMaskaのphysicsBodyscategoryBitMask別の のが 0 でない必要があります。physicsBodys

まだ行っていない場合physicsWorld.contactDelegateは、シーンの が に設定されself、 が実装されていることを確認してSKPhysicsContactDelegateください。

于 2016-10-20T15:15:35.317 に答える