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

Swiftで遊ぼう! on Hatena

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

Swiftで遊ぼう! - 775 - 接触判定!

ビットマスクはある程度理解したつもりですが、もう一度復習をします。

「collisionBitMask」とは?

このマスクを使って、どのphysics bodyが、このphysics bodyと衝突するか定義できると説明がありますが、どういうことでしょう。2つのphysics bodyがお互いに接触したときに、collisionが発生します。このcollisionBitMaskは、論理オペレーション「AND」を使って、相手のカテゴリーマスクと見なされるようです。ということは結果が「0」じゃなかったら衝突によって影響を受けるということです。各々のボディーは、接触によって影響をうけるかどうか選択することができるってことです。例えば、ボディの速度にわずかな変化を加えるであろう衝突の計算を避けるために利用することができます。

とまあ、これがリファレンスの説明です(^_^;)

ということは、今回チュートリアルで設定したexplosionRadiusBodyの「collisionBitMask」は「0」なんで、他のオブジェクトとの衝突に影響を受けないということです。

そうそう、このチュートリアルで用意されているテンプレートコードの内容を少し変更しています。PhysicsTypeを次のように変更しました。

enum PhysicsType  {
  static let None            :UInt32  =   0
  static let Player          :UInt32  =   1
  static let Wall            :UInt32  =   2
  static let Beaker          :UInt32  =   4
  static let ExplosionRadius :UInt32  =   8
  static let Cat             :UInt32  =   16
  static let ZombieCat       :UInt32  =   32
}

struct型で書くのが一般的のようですが、私はenumで書いた方がしっくりくるんですが、どうでしょうか?

今日はここまで。