2016-04-26 15 views
0

私は、Xocdeと素早いプログラミング言語を使って宇宙飛行士を作るための最終プロジェクトの一環であったゲームを完成させました。Spritekit Xcodeで爆発を追加する最適な方法

私はすべての要件を満たしましたが、私はちょうどそれの楽しさのためにここに少しのものを追加したいと思っていました。

船を操縦して50点に到達する必要があります.50に達すると、40ヒットを必要とするボスが現れます。

現在、40ヒットが読み込まれると、別のgamecene(youwin)シーンに移動します。

ボススプライトの上に爆発画像を追加する方法を理解しようとしていますが、スプライトが画面上をゆっくりと上がるためです。

爆発のGIFから画像を抽出して追加したところ、0.1秒ごとにテクスチャを切り替えるだけですが、あまりにも多くの作業を考えました。

私はそれが動作しますが、一度だけ...

爆発が起こるが、それは文句を言わない従っ

If score == 40 
{ 

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

} 

その後、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() }) 

    } 

を粒子SKSを使用しようとしましたbossSpriteは画面上を移動します。

私の質問は、Spriteがゼロのヒットポイントに達したら、爆発を追加する最も最適な方法は何でしょうか。

私が提供されているコードは、私が賭ける私の欲求を満たすためにビットを変更することができたが、私はそれがゲームに遅れると私は確信しているので、私は、バックグラウンドとして実行中の粒子を持っているダウン

をフレームをもたらすだろうと確信している

私はラグを経験するだろう。

は、あらかじめ個人的に

答えて

0

にありがとう私はあなたが試したとの両方がうまくどのような作品の両方をしました。何が最も効果的かを判断する/テストするのはあなた次第です。

テクスチャこれはちょうど(SKAction.animateWithTextures()を使用して)作品

を使用したアニメーション、ゲームが始まる前に、あなたのテクスチャをプリロードする場合、それは本当にパフォーマンスに影響を与えることはできません。あなたは単純な爆発をするために10以上のテクスチャを必要としません。アニメーションを作成するときに妥当な時間遅れを設定すれば、うまくいくでしょう。 SKEmitterNodeを必要とする別の解決策は、同様にいいですSKEmitterNodeに

を使用して

。例えば、私がこれをやっていた一つの方法は、現在のシーンで所望のエミッタのプロパティを作ることでした。次に、SKActionを実行すると、一定の遅延の後にそのエミッタのコピーが数回追加されます。ここで重要なのはで、エミッタのコピーをボススプライトに追加することです。移動すると、追加されたエミッタもすべて移動します。エミッタノードのzPositionをボススプライトよりも高く設定することを忘れないでください。

実際は状況によって異なりますが、静的エミッタが必要な場合もあります。また、特定のクラスのインスタンスごとに作成することもあります。しかし、可能であれば、この例のように、ディスクからエミッタを解凍した後、ただ再使用する必要があります(つまり、同じエミッタを複数回展開する必要はありません)。こうすることで、ディスクからの読み取りが最小限に抑えられ、fpsの低下はありません。もちろん、エミッタを控えめに使用しないと、常に遅れが生じる可能性があります。また、放出されたときにエミッタを取り除くことは、ドキュメントに従って良い習慣であるので、そのことも忘れないでください。

関連する問題