SpriteKitの衝突判定のデリゲートメソッドdidbegincontactが呼ばれなくてハマった。シーンにデリゲートの設定をして、衝突するオブジェクトそれぞれにcategoryBitMaskとcontactTestBitMaskを衝突判定させるように設定していて、なぜこれでデリゲートが呼ばれないのかと試行錯誤
失敗していたコードは下記のような感じ。
var slowCarBody = SKSpriteNode(textture:sCar) slowCarBody.categoryBitMask = slowCarBitMask slowCarBody.contactTestBitMask = playerCarBitMask slowCar.physicsBody = slowCarBody gameNode.addChild(slowCar)
そして下記のような感じに修正するとデリゲートが呼ばれるようになった。
var slowCarBody = SKSpriteNode(textture:sCar) slowCar.physicsBody = slowCarBody slowCarBody.categoryBitMask = slowCarBitMask slowCarBody.contactTestBitMask = playerCarBitMask gameNode.addChild(slowCar)
違いは、オブジェクトの判定サイズの設定と判定グループの設定の順番を入れ替えた点。physicsBodyをイニシャライズする前にカテゴリを設定しようとしているんだからそりゃ効かない。spriteノードを作ったから大丈夫だろうと無意識でいたので気づかなかった