我有以下两个快速函数用于 SKEmitterNode 和 SKSpriteNode 之间的碰撞检测,但是每当我的粒子发射器和 Sprite 发生碰撞时,我都会收到 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
发生碰撞,或者这将不起作用?
最佳答案
你的 body 已经互换了。我认为应该是这样的:
projectileDidCollideWithMonster(secondBody.node as SKEmitterNode, monster: firstBody.node as SKSpriteNode)
关于ios - skemitternode 与 skspritenode 的碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27496028/