【发布时间】:2016-04-13 01:42:30
【问题描述】:
这是我第一次尝试使用 SpriteKit,但我无法正确使用位掩码进行碰撞。 我有三个类别,如果玩家点击 lit,我想增加分数并将 lit 节点移出屏幕,否则,我想调用我的 gameover() 函数。我已经尝试了很多变体,除了一般碰撞之外什么都看不到。我还为每个节点定义了类别和联系人位掩码。
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()
}
}
【问题讨论】:
-
您不希望 if 条件等于 0 和 1,而是希望它们等于您正在检查的类别
-
id didBeginContact 是否调用过?
标签: swift sprite-kit collision