三个sprite节点冲突

时间:2015-11-15 05:27:10

标签: ios swift sprite-kit swift2 skspritenode

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

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

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

检查bodyA和bodyB是否为零。我遇到了同样的问题并用这行代码解决了它:

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