2016-10-20 10 views
0

私のdidEndContact:メソッドでは、 "currentScore"をインクリメントします。SpriteKit didEndContactが呼び出されない

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 
    } 
} 
+0

didEndContactが発生する前にシーンからスプライトを削除していますか?それはそれから呼び出されないので – Knight0fDragon

+0

@ Knight0fDragonええ私はこれのためにチェックした:http://stackoverflow.com/questions/29331799/spritekit-didbegincontact-called-but-not-didendcontact、しかし私と二重のチェックのためにありがとう – SRMR

答えて

1

衝突を検出するためには、physicsBodycontactTestBitMaskを設定する必要があります。

physicsBodyscontactTestBitMaskphysicsBodyscategoryBitMask

は検出がトリガするためにバイナリAND演算が2つの整数に適用されないときは0でなければなりません。

シーンのphysicsWorld.contactDelegateselfに設定されており、が実装されていることを確認してください。

+0

私は 'physicsWorld.contactDelegate = self'を二重にチェックし、Sceneが' SKPhysicsContactDelegate'を実装しているように見えるので、検出された衝突を説明してくれてありがとう、ビットマスクの部分もやっていることを確認できました。 – SRMR

+0

それは動作していますか? – Christoph

+0

いいえまだ動作していません – SRMR

関連する問題