我对我正在为我的发射器产生的碰撞提出了一个问题。当碰撞发生时,应用程序崩溃。但是从我一直在做的研究中,我看不出有什么不对。
碰撞:
if bodyA.categoryBitMask == 1 && bodyB.categoryBitMask == 3 || bodyA.categoryBitMask == 3 && bodyB.categoryBitMask == 1{
print("END GAME")
let dieexplostionNode = SKEmitterNode(fileNamed: "Explode")
player.addChild(dieexplostionNode!)
}
我错过了发射器产生的东西吗?每次碰撞都会崩溃。
答案 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