2017-05-28 11 views
0

私のゲームでは、色が異なるサークルがあります。彼らは色のない境界線と衝突するだけです。 これを行うには、最初にノーマルサークルにカテゴリビットマスクを割り当てます。円は、それはそれはそれはしませんが、境界に衝突し停止させる必要があるビットマスクを取得しピッカーと衝突した後SpriteKitのビットマスクに問題SWIFT

boundary.physicsBody?.categoryBitMask = CollisionCategoryBitmask.bound 
boundary.physicsBody?.collisionBitMask = 11101111 

struct CollisionCategoryBitmask { 
    static let monster: UInt32 = 00000001 
    static let picker: UInt32 = 00000010 
    static let bound: UInt32 = 00000100 
    static let circle: UInt32 = 00001000 
    static let yellow: UInt32 = 00010000 
    static let brown: UInt32 = 00100000 
    static let cyan: UInt32 = 01000000 
    static let magenta: UInt32 = 10000000 
} 

physicsBody?.categoryBitMask = CollisionCategoryBitmask.circle 

境界は、次のマスクを持っています。

self.circles[i].fillColor = .yellow 
        self.circles[i].physicsBody?.categoryBitMask = 00010000 
        self.circles[i].physicsBody?.collisionBitMask = 11111011 

このコードは、円がピッカーと衝突したときに実行されます。 シアンとマゼンタのような構造体の値は、それぞれがその色の境界と衝突しない円の状態に対応しています。私のミスはどこですか?

答えて

1

すべてのリテラルの先頭に「0b」を追加するだけです。今はバイナリ表記を使用していません。

ビットマスクの仕組みの詳細を参照してください。