【Swift】Spritekitの使い方。衝突した位置にパーティクルを放出する。(Swift 2.2、XCode 7.3)

2020年6月16日

パーティクルファイルとは

前回記事ではシーンにエミッターノードを配置してパーティクルを放出する方法を説明した。⇒「前回記事

シーン内の特定位置にパーティクルを放出するのではなく、ノード同士が触れたときの爆発シーンなどでパーティクルを瞬間的に放出したいことがある。そんなときにパーティクルファイルが利用される。というか、普通にエミッターノードをシーンに配置するときもパーティクルファイルを使うことが多い。

パーティクルファイルとは、パーティクルの放出を設定しておくことに特化したファイルである。このファイルをソースコードで読み込んでシーンに追加する。

 

パーティクルファイルを使ってみる

実際にパーティクルファイルを作って、ノード衝突時にパーティクルを放出してみよう。

以降の手順を行う前のXcodeプロジェクトをGitHubに置いたので、試してみる方はご利用下さい。⇒「テスト用プロジェクト

事前準備では、背景と鳥2匹をシーンに追加し、タップで茶鳥を落として赤鳥と衝突するところまでを実装しておいた。

 

以下のコードは、変更前のTestScene.swift

 

メニューから「File」⇒「New」⇒「File…」を選択する。

新規ファイルを作成する。

 

テンプレートを選択する画面が表示されるので、iOSの「Resource」⇒「SpriteKit Particle File」を選択し、「Next」ボタンを押す。

テンプレートを選択する

 

パーティクルのテンプレートを選択する画面が表示されるので、今回は「Spark」を選択して「Next」ボタンを押す。

パーティクルの種類を選択する

 

ファイル名を入力する画面が表示されるので、Save Asに「TestParticle」を入力、保存先がプロジェクトフォルダになっていることを確認し、「Create」ボタンを押す。

ファイル名を入力する

 

これでプロジェクトに「TestParticle.sks」と「spark.png」の2つのファイルが追加された。

この中のTestParticle.sksがパーティクルファイルである。拡張子は「skp」のようになるかと思いきや、SpriteKit Sceneファイル(以下、SKSファイル)と同じ「sks」である。間違わないように気をつけよう。

パーティクルファイルが追加された

 

TestParticle.sksを開くと閃光の動画が表示される。これは、先ほどのパーティクルのテンプレートで「Spark」を選択したためである。

 

パーティクルのテンプレートの選択肢は全部で8種類ある。どんな感じか見てみよう。

Bokeh(ぼやけ)

 

Fire(炎)

 

FireFlies(ほたる)

 

Magic(魔法)

 

Rain(雨)

 

Smoke(煙)

 

Snow(雪)

 

すべてのパーティクルは、アトリビュートインスペクタの設定画面で色や形、個数、速度、方向などを細かく設定できる。好みに応じて自由に変更するべし。

設定項目の意味については次の記事を参照されたし。⇒「パーティクルの設定

パーティクルのアトリビュートインスペクタボタン

 

今回はアトリビュートインスペクタの設定を下表に変更した。

設定項目 設定値
Texture 「testRect」
Emitter Birthrate「30」
Lifetime start「0.2」
Speed Start「300」、Range「200」
Scale Start「0.5」

 

TestScene.swiftのdidBeginContactメソッドを以下のコードに変更する。

 

以下は実際のプレイ動画