У меня есть следующие две функции в swift для обнаружения столкновений между SKEmitterNode и SKSpriteNode, однако я продолжаю получать исключение dynamicCastFailed всякий раз, когда мой эмиттер частиц и спрайт сталкиваются:
func projectileDidCollideWithMonster(projectile:SKEmitterNode, monster:SKSpriteNode) {
println("Hit")
projectile.removeFromParent()
monster.removeFromParent()
}
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(firstBody.node as SKEmitterNode, monster: secondBody.node as SKSpriteNode)
}
}
Можно ли заставить SKEmitterNodes
столкнуться с SKSpriteNodes
или это не сработает?