這是我第一次嘗試使用SpriteKit,我無法通過位掩來獲得我的碰撞。 我有三個類別,如果玩家點燃,我想增加分數並將點亮的節點移出屏幕,否則,我想調用我的gameover()函數。我嘗試了很多變化,看不到任何東西,但一般的碰撞被認可。我也爲每個節點定義了類別和聯繫人位掩碼。Swiftkit碰撞處理
let playerCategory: UInt32 = 1
let razzCategory: UInt32 = 2
let litCategory: UInt32 = 4
func didBeginContact(contact: SKPhysicsContact) {
var firstBody: SKPhysicsBody
var secondBody: SKPhysicsBody
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
firstBody = contact.bodyA
secondBody = contact.bodyB
}
else
{
firstBody = contact.bodyB
secondBody = contact.bodyA
}
if ((firstBody.categoryBitMask & playerCategory) == 0 && (secondBody.categoryBitMask & litCategory) == 1)
{
lit.position.x = 400
score += 1
}
else {
gameOver()
}
}
你不想要的,如果條件等於0和1,你希望他們等於要檢查 – Knight0fDragon
ID didBeginContact叫在所有類別? – hamobi