столкновение skemitternode с skspritenode

У меня есть следующие две функции в 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 или это не сработает?


person duxfox--    schedule 16.12.2014    source источник


Ответы (1)


Вы поменялись телами. Я считаю, что это должно быть так:

projectileDidCollideWithMonster(secondBody.node as SKEmitterNode, monster: firstBody.node as SKSpriteNode)
person 67cherries    schedule 16.12.2014
comment
Без проблем! Удачи! - person 67cherries; 16.12.2014