三精灵节点碰撞

Three sprite node collision

我有一个射击应用程序,当子弹击中两个重叠的节点时崩溃。我已经尝试了所有方法,我尝试检查尸体是否为零,但它不允许我这样做,我不确定如何再进行这项工作。这是代码:

 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 & photonCategory) != 0 && (secondBody.categoryBitMask & alientCategory) != 0){
            aliensCollideWithBullets(firstBody.node as! SKSpriteNode, alien: secondBody.node as! SKSpriteNode)
            //            firstBody.node?.removeFromParent()
            //            secondBody.node?.removeFromParent()
        }



    }
    func aliensCollideWithBullets(torpedo:SKSpriteNode, alien:SKSpriteNode) {

        print("hit")

        torpedo.removeFromParent()
        alien.removeFromParent()
        aliensDestroyed++
        trumpsDestroyedLabel.text = "\(aliensDestroyed) Trumps"

        if (aliensDestroyed > 10) {
        }
    }

线路崩溃是:

if ((firstBody.categoryBitMask & photonCategory) != 0 && (secondBody.categoryBitMask & alientCategory) != 0){
            aliensCollideWithBullets(firstBody.node as! SKSpriteNode, alien: secondBody.node as! SKSpriteNode)
            //            firstBody.node?.removeFromParent()
            //            secondBody.node?.removeFromParent()
        }

感谢任何帮助。

检查正文和正文是否为零。我有同样的问题并用这行代码解决了它:

if contact.bodyA.node != nil && contact.bodyB.node != nil