読者です 読者をやめる 読者になる 読者になる

Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 782 - SKPhysicsContactDelegate

PhysicsBodyはノードが身にまとう重力センサーの着いたボディースーツのようなもので、個々のノードがふれ合うと、論理オペレーションが生じて、SKPhysicsContactオブジェクトが生成されます。このPhysicsContactオブジェクトは、そのまま接触情報としてPhysicsWorldの持っているデリゲーションメソッド(PhysicsContactDelegate)に渡されます。

GameSceneはプロパティとして「physicsWorld」を持っているし、physicsWorldは「contactDelegate」をプロパティとして持っています。

GameSceneの初期化ステップとして働く「didMove(to view: SKView) 」で以下のように指定するのは基本です。

override func didMove(to view: SKView) {
 physicsWorld.contactDelegate = self
 newProjectile()
 for i in 0...8 {
   explosionTextures.
    append(SKTexture(
      imageNamed: "regularExplosion0\(i)"))
 }
}

これでphysicsWorldのcontactDelegateメソッドが動くようになります。ビーカーを投げてビーカーが猫に近づいて接触が生じるととデリゲーションメソッドの「didBegin(_ contact:SKPhysicsContact) 」が起動されるからです。

でもまだ不十分です...

今日もこれだけ。