комплект спрайтов, получающий нулевое значение при столкновении

когда я проверяю на столкновение в моей игре с комплектом спрайтов, я получаю нулевое значение, когда один узел сталкивается с двумя другими узлами одновременно. В основном у меня есть «монстры» и «огненный шар», иногда 2 монстра находятся в одном месте, и огненный шар, который я снимаю с моего игрока, одновременно сталкивается с обоими монстрами, поэтому одновременное обнаружение столкновения происходит одновременно. как.

Метод столкновения выполняется дважды подряд, но проблема в первом запуске, я удаляю огненный шар со сцены, поэтому второе столкновение получает «нуль» для файербола, или так кажется ,

heres код:

func projectileDidCollideWithMonster(projectile:SKNode, monster:SKNode) { println("Hit") (monster as Character).negativeEffect.runningSpeed = (projectile as FireBall).negativeEffect.getRunningSpeed() projectile.removeFromParent() println("finished hit") } func didBeginContact(contact: SKPhysicsContact) { // 1 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 } // 2 if ((firstBody.categoryBitMask & PhysicsCategory.Monster != 0) && (secondBody.categoryBitMask & PhysicsCategory.Projectile != 0)) { projectileDidCollideWithMonster(secondBody.node!, monster: firstBody.node!) } } 

любая идея о том, как этого избежать?

делая некоторые исследования и размышления, на этот раз я пришел к следующему исправлению, пока не найду лучшее исправление (если оно существует)

сначала я сделал первый / второй вариант тела, затем я проверю, если они ноль, прежде чем разворачивать их:

 var firstBody: SKPhysicsBody? var secondBody: SKPhysicsBody? if (firstBody!.node! != nil && secondBody!.node! != nil) { if ((firstBody.categoryBitMask & PhysicsCategory.Monster != 0) && (secondBody.categoryBitMask & PhysicsCategory.Projectile != 0)) { projectileDidCollideWithMonster(secondBody.node!, monster: firstBody.node!) } }