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

Swiftで遊ぼう! on Hatena

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

Swiftで遊ぼう! - 727 - 物理世界をスプライトに

ゲームでノード間の衝突を実装するために、SKPhysicsContractDelegateプロトコールに準拠しなければなりません。

ノードにphysics bodyというボディースーツをまとわせます。しかし、このボディスーツ、形は単純で「四角」か「丸」しかないようですが、問題にはならないそうです。

そしてボディースーツにはカテゴリーがあり、どういう状態なのかビットを使って設定します。このビットをグローバル定数として最初に宣言するんです。

チュートリアルは下記のようなstruct型を使って設定しています。

struct PhysicsCategory {
    static let None: UInt32 = 0
    static let All: UInt32 = UInt32.max
    static let Monster: UInt32 = 0b1       // 1
    static let Projectile:  UInt32 = 0b10      // 2
}

しかし、よく考えて見ると、こういうカテゴリーを扱う場合、struct型よりもenum型を使った方がいいような気がします。

enum PhysicsCategory {
    static let None: UInt32 = 0
    static let All: UInt32 = UInt32.max
    static let Monster: UInt32 = 0b1       // 1
    static let Projectile:  UInt32 = 0b10      // 2
}

これでも問題無いですよね。ベテランプログラマーの皆さん。

今日はこれだけ。