ASCII倶楽部

このページの本文へ

Swift Playgroundsで学ぶiOSプログラミング 第50回

パーティクルエミッターを使った応用技

指先から火花を放出するプログラム

2017年08月07日 17時00分更新

文● 柴田文彦 編集●吉田ヒロ

  • この記事をはてなブックマークに追加
  • 本文印刷

 今回はSpriteKitの4回目として、とりあえずこの話題もいったんまとめておきたいと考えています。SpriteKitの代表的な機能の中でまだ取り上げていなかったのは、前回の最後に予告したパーティクルエミッターです。この語の文字どおりの意味は「粒子を放射するもの」ということです。実際に動かしてみれば、確かにそういうものだと納得できる効果を発揮してくれるでしょう。

 そのパーティクルエミッターと、これまでに紹介してきたSpriteKitの機能を見比べてみるとだいぶ趣が違うと思われるかもしれませんが、実はそうでもないのです。パーティクルエミッターは、SpriteKitの中の1つのノードとして扱えるようになっています。いったん作成してしまえば、そのあとの扱いは通常のスプライトとあまり変わりません。

 今回は、2種類のパーティクルエミッターを使ってみることにしました。1つはどちらかというと静的なもので画面にずっと雨を降らせ続けます。もう1つは、ユーザーが画面にタッチした位置に火花が飛び散るような効果を表示するものです。そのまま指を動かすと火花の中心も移動し、画面から指を離せば火花は止まります。こんな劇的な効果も、SpriteKitを使えばあっけないほど簡単に実現できるのです。

パーティクルファイルを作成する

 SpriteKitでパーティクルエミッターを利用する際には、その細かな設定を記録したパーティクルファイルを使うのが普通です。「普通」と書いたのは、それが必須ではないからです。ファイルを使わない場合には、パーティクルの性格を決めるパラメータを、プログラムで1つずつ設定していく必要があります。それでいいではないかと思われるかもしれませんが、その設定項目は数十個にもなります。パーティクルの設定にかなり慣れていて、パラメータの数字を見るとその効果が頭の中で想像できる人なら、それでもいいでしょう。そうでない人は、あちこちの設定をいろいろいじっても思ったような効果が得られず、途中で嫌になってしまうのがオチかもしれません。

 そこで、今回は素直にパーティクルファイルを利用することにします。と言っても、それをどうやって作るかが問題です。実はXcodeを使えば、専用のテンプレートを選ぶだけで簡単にパーティクルファイルを作成することができます。

SpriteKitのパーティクルエミッターを利用するには、通常はXcodeで「SpriteKit Particle File」という一種のリソースファイルを作成し、複雑な設定をすべてそこに押し込むのが普通です

 その際のテンプレートとしては、あらかじめ8種類が用意されています。今回はその中から、「Rain」と「Spark」の2種類を選んで、それぞれ別のパーティクルファイルとして生成しました。Xcodeが使える環境の人は、ほかのテンプレートを選んで自分で作ってみるのもいいでしょう。Xcodeが使えない人は、このサイトの最後にダウンロードリンクを張りましたので、パーティクルファイル(それぞれ「PGRain.sks」と「PGSpark.sks」という名前です)をダウンロードしてプレイグラウンドに追加してください。

パーティクルファイルを作成する際には、テンプレートとして用意されている8種類の設定から選ぶことができます。今回は、この中から、RainとSparkを選んで作成した2種類のファイルを使います

 ちなみにXcodeを使う場合には、いったん生成したパーティクルファイルの内容をその場で編集し、自由にカスタマイズすることも可能です。ただし今回は、パラメータは何も変更せず、デフォルトのまま使うことにします。

Xcodeには、プロジェクトに読み込んだパーティクルファイルのエディタが組み込まれていて、ファイルに組み込まれた細かな設定をその場で変更できるようになっています。この図に見えるのは、そのほんの一部です

 実は、パーティクルファイルのパラメータには「Texture」という項目があり、小さな画像ファイルが指定してあります。これは、個々のパーティクルの形状を表す画像です。今回作成した2種類のパーティクルファイルは、いずれも「spark.png」というテクスチャーを参照しています。これは周囲がボケた円形のテクスチャーです。そのファイルも合わせてプレイグラウンドに追加しておいてください。

カテゴリートップへ

この連載の記事

ASCII倶楽部の新着記事

会員専用動画の紹介も!