这是我正在使用的代码:
func didBeginContact(contact: SKPhysicsContact) {
var firstBody : SKPhysicsBody?
var secondBody : SKPhysicsBody?
var thirdBody : SKPhysicsBody?
var GoodKind : SKNode?
var BadKind : SKNode?
var Bullet : SKNode?
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask) {
firstBody = contact.bodyA
secondBody = contact.bodyB
GoodKind = contact.bodyB.node
BadKind = contact.bodyB.node
Bullet = contact.bodyA.node
}
else {
firstBody = contact.bodyB
secondBody = contact.bodyA
GoodKind = contact.bodyA.node
BadKind = contact.bodyA.node
Bullet = contact.bodyB.node
}
if (firstBody!.categoryBitMask == PhysicsCategory.Tooth && secondBody!.categoryBitMask == PhysicsCategory.Food) {
GoodKind?.removeFromParent()
Counter++
println("\(Counter)")
}
else if (firstBody!.categoryBitMask == PhysicsCategory.Tooth && secondBody!.categoryBitMask == PhysicsCategory.WrongFood) {
BadKind?.removeFromParent()
Bullet?.removeFromParent()
}
}
如果Bullet
与BadKind
发生碰撞,那么BadKind
会被子弹删除,这很好;如果Bullet
与GoodKind
发生冲突,则会移除GoodKind
并且Counter
正常工作,但如果两个或更多Bullet
与{{1}发生冲突几乎在同一时刻GoodKind
将增加2次或更多次。这是我不想发生的事情,但我无法弄清楚如何让它按照我想要的方式工作。我将不胜感激。