2014-12-16 6 views
1

У меня есть следующие две функции стрижа для обнаружения столкновений между SKEmitterNode и SKSpriteNode однако я получаю исключение dynamicCastFailed всякий раз, когда мой излучатель частиц и спрайта конфликтуют:skemitternode столкновение с skspritenode

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 или это не сработает?

ответ

1

У вас есть свои тела. Я считаю, что это должно быть так:

projectileDidCollideWithMonster(secondBody.node as SKEmitterNode, monster: firstBody.node as SKSpriteNode) 
+0

спасибо, что исправил его! –

+0

Нет проблем! Удачи! – 68cherries

Смежные вопросы