skemitternode 与 skspritenode 碰撞

Posted

技术标签:

【中文标题】skemitternode 与 skspritenode 碰撞【英文标题】:skemitternode collision with skspritenode 【发布时间】:2014-12-16 01:20:28 【问题描述】:

我在 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)
    


是否有可能使SKEmitterNodesSKSpriteNodes 发生冲突,或者这不起作用?

【问题讨论】:

【参考方案1】:

你换了身体。我认为应该是这样的:

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

【讨论】:

没问题!祝你好运!

以上是关于skemitternode 与 skspritenode 碰撞的主要内容,如果未能解决你的问题,请参考以下文章

SKEmitterNode 的问题?

点亮 SpriteKit SKEmitterNode

从 SKEmitterNode 动画粒子

如何让 SKEmitterNode 在 SwiftUI 中工作?

设置 SKEmitterNode 的“targetNode”会导致奇怪的“zPosition”行为

SKEmitterNode 对另一个对象施加力爆炸