2016-04-26 86 views
0

我已經完成了一個遊戲,該遊戲是我的最終項目的一部分,該項目是使用Xocde和swift編程語言製作太空射擊遊戲。在Spritekit Xcode中添加爆炸的最佳方法

我滿足了所有的要求,但我想在這裏和那裏添加小東西,只是爲了它的樂趣。

我把它放在你控制船的地方,你必須達到50分。一旦你達到50,就會出現一個需要40次命中的老闆。

截至目前,一旦40次命中讀取,它就會移動到另一個遊戲場景(youwin)場景。

我想弄清楚如何在Boss Sprite頂部添加爆炸圖像,因爲Sprite慢慢地向上移動屏幕。

我從爆炸gif中提取圖像並添加它們,我只需每隔0.1秒就切換紋理,但後來我發現這太多了。

然後我試圖用顆粒SKS已經在Xcode

func explosion(pos: CGPoint) { 
     var emitterNode = SKEmitterNode(fileNamed: "ExplosionParticle.sks") 
     emitterNode.particlePosition = pos 
     self.addChild(emitterNode) 
     // Don't forget to remove the emitter node after the explosion 
     self.runAction(SKAction.waitForDuration(2), completion: { emitterNode.removeFromParent() }) 

    } 

然後

If score == 40 
{ 

explosion(self.heroSprite.position) 
endGameScene (you win).. etc 

} 

它的工作原理,但只有一次......

爆炸發生,但它不會跟隨bossSprite在屏幕上移動。

我的問題是,一旦它達到零點生命值,Sprite就會增加爆炸的最佳方式是什麼。

我提供的代碼可以修改一下,以滿足我的願望我敢打賭,但我敢肯定它會滯後於遊戲,並把框架下

我有運行爲背景的粒子,所以我敢肯定我會遇到滯後。

謝謝你提前

回答

0

我個人做了你已經嘗試過的兩種,兩者都很好。你決定/測試哪種方法最好。

與紋理

這只是工作(使用SKAction.animateWithTextures())動畫,它真的,如果你預裝的紋理在比賽開始前不能對性能的影響。你不需要超過10個紋理來進行簡單的爆炸。只需設置合理的時間延遲動畫,你會沒事的。

使用SKEmitterNode

的另一種解決方案,其涉及SKEmitterNode是很好的爲好。例如,我這樣做的一種方式是在當前場景中製作所需發射器的屬性。然後,您可以運行一個SKAction,它將在某個延遲後幾次添加該發射器的副本。這裏重要的是添加一個發射器的副本老闆精靈。所以如果它移動,所有添加的發射器也會隨之移動。不要忘記將發射器節點上的zPosition設置爲高於boss精靈。

請注意,一切都取決於一種情況,有時候你想要一個靜態的發射器,有時你希望它爲每個特定類的實例創建。但重要的是,如果可能的話(比如在你的這個例子中),在你從磁盤中解壓發射器之後,你應該重新使用它(意思是說,你不必多次解析同一個發​​射器)。通過這樣做,從磁盤讀取減到最小,並且不會有fps下降。當然,如果你不謹慎使用發射器,總會有一些延遲的機會。根據文檔,排除發射器時也是一種很好的做法,所以不要忘了這樣做。