ios - skemitternode 与 skspritenode 的碰撞

标签 ios swift sprite-kit

我有以下两个快速函数用于 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)
    }

}

是否有可能使 SKEmitterNodesSKSpriteNodes 发生碰撞,或者这将不起作用?

最佳答案

你的 body 已经互换了。我认为应该是这样的:

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

关于ios - skemitternode 与 skspritenode 的碰撞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27496028/

相关文章:

ios - 如何更改 Sprite 套件中 Sprite 节点的大小以适应不同的屏幕(Swift)

swift - 如何在 Swift 中制作充当按钮的图像?

ios - 在 iOS 上同时是外设和中心

ios - 在 iOS13 上强制 QLPreviewController 进入编辑模式

用于登录 Twitter 的 iOS 库

swift - 使用 Core Data 通过 UIProgressView 在 Swift 中异步插入数据

ios - 如何在问卷中制作嵌套问题?我很困惑

swift - RxAlamofire 使用 json 主体进行 post 调用

ios - 在 iOS 中创建不适合整个屏幕的 Google map

ios - 在 SpriteKit 中创建按钮 : Swift