PC関係の情報など。あとは雑記。

まとブロ

swift

swift didbegincontactが呼ばれない

投稿日:

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ノードを作ったから大丈夫だろうと無意識でいたので気づかなかった

-swift

Copyright© まとブロ , 2018 All Rights Reserved Powered by STINGER.