两个具有相同categoryBitMask的精灵与第三个精灵

时间:2015-07-11 01:00:34

标签: swift sprite-kit collision-detection

这是我正在使用的代码:

    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()
    }
}

如果BulletBadKind发生碰撞,那么BadKind会被子弹删除,这很好;如果BulletGoodKind发生冲突,则会移除GoodKind并且Counter正常工作,但如果两个或更多Bullet与{{1}发生冲突几乎在同一时刻GoodKind将增加2次或更多次。这是我不想发生的事情,但我无法弄清楚如何让它按照我想要的方式工作。我将不胜感激。

0 个答案:

没有答案