2017-05-28 94 views
0

在我的遊戲中,我有具有不同顏色的圓圈。他們應該只碰撞不是他們的顏色的邊界。 要做到這一點,我首先分配正常的圈子類別位掩碼。SpriteKit中的位掩碼問題SWIFT

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 

邊界有以下口罩:

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

圓與它得到一個位掩碼,應該使它停止與然而邊界它不相沖突的選擇器碰撞後。

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

該代碼在圓圈與拾取器發生碰撞時執行。 結構中的值(如青色和洋紅色)均爲圓形狀態,它不會與該顏色的邊界發生碰撞。我的錯誤在哪裏?

回答

1

只需在每個文字的開頭添加「0b」。你現在不使用二進制符號。

瞭解更多關於位掩碼如何工作的信息。