发射器碰撞不起作用?

时间:2017-07-10 03:39:51

标签: swift sprite-kit

我对我正在为我的发射器产生的碰撞提出了一个问题。当碰撞发生时,应用程序崩溃。但是从我一直在做的研究中,我看不出有什么不对。

碰撞:

if bodyA.categoryBitMask == 1 && bodyB.categoryBitMask == 3 || bodyA.categoryBitMask == 3 && bodyB.categoryBitMask == 1{
    print("END GAME")
    let dieexplostionNode = SKEmitterNode(fileNamed: "Explode")
    player.addChild(dieexplostionNode!)
}

我错过了发射器产生的东西吗?每次碰撞都会崩溃。

2 个答案:

答案 0 :(得分:2)

您是否将SceneKit与SpriteKit混淆? SCN文件/缩写在SceneKit中使用 如果要添加SpriteKit粒子发射器文件。 档案 - >新 - > IOS / OSX - >资源 - > SpriteKit粒子文件

答案 1 :(得分:2)

根据您对上述答案的评论,我认为行动就是您所需要的。

if bodyA.categoryBitMask == 1 && bodyB.categoryBitMask == 3 || bodyA.categoryBitMask == 3 && bodyB.categoryBitMask == 1{
    print("END GAME")

dieexplostionNode = SKEmitterNode(fileNamed: "Explosion.sks"){
dieexplostionNode.targetNode = self 
//dieexplostionNode.position = player.position - no need for this!

// add 3 actions
let wait = SKAction.wait(forDuration: 2)
let addExplosion = SKAction.run {
    self.player.addChild(dieexplostionNode!)
}
let removeExplosion = SKAction.run {
        dieexplostionNode?.removeFromParent()
 }

// put them in a sequence.
let seq = SKAction.sequence([addExplosion,wait,removeExplosion])

// run the sequence
self.run(seq)

}

这会将dieexplostionNode添加到播放器。然后等待2秒钟。然后删除dieexplostionNode