Swift 两个具有相同类别的精灵与第三个精灵碰撞

Swift 两个具有相同类别的精灵与第三个精灵碰撞,swift,sprite-kit,collision-detection,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

这是我正在使用的代码:

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

如果子弹与劣质子弹相撞,则劣质子弹将与完好的子弹一起移除;如果子弹与实物发生碰撞,那么实物将被移除,计数器工作正常,但如果两颗或更多的子弹几乎同时与实物发生碰撞,计数器将增加2倍或更多倍。这是我不想发生的事情,但我不知道如何让它以我想要的方式工作。我将非常感谢您的帮助。

您可以这样尝试:这不是我所需要的。多亏了这篇文章,我才得以解决