前回、的を左右に移動させる処理を実装しました。
ゲームをプレイして分かりますが、ボールが的に当たったのか、当たっていないのか分かりにくい場合が見受けられます。
そこで、パーティクルを使って、的にボールが当たった際の演出を追加したいと思います。
パーティクルを追加することで見栄えも良くなり、おしゃれ感も出せるでしょう。
的当てゲームにパーティクルを実装する
パーティクルは、粒子のことです。この粒子を大量に表示させることで、水などのエフェクトを表現することが出来ます。アクション系のゲームを作る上では欠かせないでしょうね。
Unityは、コンポーネントとして用意しているので、初心者でも簡単にパーティクルを使うことが出来ます。
エフェクトを表示させる
とりあえず、どんなものか実際に使っていきましょう。
まずは、ヒエラルキーウィンドウから的を選択して、AddComponentボタンをクリックして、「Effects」→「Particle System」を選択します。
すると、シーンビューに紫色の四角形が大量に放出されるはずです。
これがまさにパーティクルです。
今は、デフォルト状態ですが、他にさまざまなパラメータが用意されているので、ゲームにふさわしいパラメータになるように調整していきます。
パーティクルにマテリアルを設定
デフォルトでは、何もマテリアルが設定されていないので、マテリアルを設定していきます。
ヒエラルキーウィンドウでボールを選択し、インスペクターParticle Systemの一番下にあるRendererをクリックして、Materialを開きます。
すると、色々なマテリアルが選べるので、好きなマテリアルを選択しましょう。
私は「ParticleAfterburner」という白い粒子のマテリアルにしました。
エフェクトの形状を変更する
現状では、右から左にパーティクルが放出されていますね。
この放出される形状を変更したいと思います。的に当たったら弾けるようにしたいところです。形状を変更する方法も簡単に出来ます。
Particle System内の「Shape」をクリックして、Shapeを「Sphere」に変更するだけです。
するとこのように、放出形状が変化しました。
的に当たった際の適切なエフェクトは、やはり満遍なく弾けるようなエフェクトになるでしょう。
このまま続けて、パーティクルが常に放出されないようにします。常に放出されっぱなしだとRPGで言うところのセーブゾーンみたいな感じになりそうですし。
まずは、Particle Systemの「Emission」を開きます。
「Rate」は毎フレームに生成されるパーティクル数で、「Bursts」はパーティクルの数を時間で指定します。
今回の場合は、「Rate over Time」を「0」にして常にパーティクルを生成しないようにします。
そして、ボールが的に当たった際に、パーティクルを放出するので、BurstsのTimeを「0」にして「Count」を30ぐらいにしておきます。
Countの数を調整することで、表示させるパーティクルの個数が異なるので、シーンビューで見栄えを確認しながら増やしたり減らしたりしてください。
私のシーンビューの見栄えはこんな状態です。
パーティクルが弾けてから消えるまでの時間がやや長いので、短くします。
再生時間の調整は、「Duration」と「Start Lifetime」をそれぞれ「1」にすればOKです。
これで、パーティクルがすぐに消えるようになりますが、瞬間的に消えてしまうので、フェードアウトするような消え方にします。
まずは、「Size over Lifetime」にチェックを入れて、「Size」の右側にある黒い枠の中をクリック。
オレンジ枠内の部分ですね。右にあるドロップダウンリストと間違えないようにしましょう。
次に、Particle System Curvesの右から2番目にある減衰カーブを選択します。
この状態で見栄えをチェックしてみましょう。
良い感じに消えるようになりました!パーティクルのサイズが小さくなっていますね。
次は、ループ再生を行わないようにします。
Particle System内のLoopingのチェックを外します。これでループしないようになります。
最後に、アタッチしたオブジェクトがアクティブになるとエフェクトが再生されるのを防ぐために「Play On Awake」のチェックも外しておきましょう。
ボールが的に当たったらパーティクルを再生させるスクリプト
後はスクリプトを少々修正するだけで良いですね。
的側のスクリプトに、衝突が発生した際の処理を追加しました。
ParticleSystemコンポーネントを取得して、Playメソッドを呼び出すことでこれまで設定してきたエフェクトを再生します。
スクリプトを保存したら、ゲームを実行して的に当たったらパーティクルが表示されるか確かめてみましょう。的にボールが当たった場合のみパーティクルが表示されるはずです。
今回、的に対してパーティクルの設定を行ったのは、Terrainとボールのコライダの関係からです。
ボールにパーティクルの設定を行うと、的に当たらなくても、地面に落ちた際や、ボール同士が接触した際にもパーティクルが表示されてしまうので、注意が必要です。