【Unity】2Dシューティングを作ってみる話 #12

記事をご覧いただき、誠にありがとうございます。
投稿主の無能です。

前回は、敵の画像と弾を発射する処理を実装しました。

今回はオブジェクトが消える時に爆発するようなエフェクトを表示できるようにしていきます。

パーティクルシステムで爆発を表現する

今回はパーティクルシステムをと言うものを使って、爆発のような表現をしてみたいと思います。

パーティクルシステムって何?と言う方はドキュメントを参照してください。

パーティクルシステム - Unity Documentation

ドキュメントにも記載がある通り、実に様々な表現ができます。

今回は爆発の表現に使いたいと思います。

爆発がどうなっているか分解してみる

爆発の表現を作るとは言え、そもそも爆発がどういったものなのかを言い表せない事には、理解しているとは言い難いと思います。

ですので一度、爆発ってどうなっているのかな?という視点で考えてみたいと思います。

爆発と一言で言っても様々な形の爆発がありますが、今回は単純にドカーンと言うような爆発を考えてみます。

ドカーンとなった時に、そのエネルギーが全て燃え広がるような形になります。

ですので、ドカーンのタイミングが最も燃え広がると考えると、この時が一番エネルギーの光の環が広がります。

そしてドカーンのタイミングから光が消えるまで、急速に光の環が縮小していきます。

最後は何も無くなって、元の状態に戻ります。

ここから考えるに、最初が最高値で、後は0(収束)に向けて徐々に変化していく、という表現にしてあげると、正にドカーンが表現できるのではないかと思います。

早速やっていきましょう。

オブジェクトを作成してパーティクルシステムをアタッチする

先にプレイヤーの爆発を作ってみて、その後に敵の爆発を作りましょう。

まずは空のオブジェクトを作成し「Explosion_Player」という名前にします。

「Explosion_Player」という空のオブジェクトを作成する

そしてExplosion_PlayerにComponent >Effects >Particle System でパーティクルシステムを追加します。

Component >Effects >Particle System でパーティクルシステムを追加する

すると何やら花火のようなエフェクトが出るようになりました。

パーティクルシステムを追加するとエフェクトが再生され始めた

でもこのエフェクトがループして止まらないので、InspectorビューのLoopingのチェックを外してエフェクトのアニメーションが終了したら止まるようにします。

Loopingのチェックを外す

すると、一度アニメーションが再生されたら止まるようになりました。

アニメーションが再生されたら停止した

それではパーティクルシステムを設定していきます。

パーティクルシステムを設定する

そもそもなんでショッキングピンクが表示されたのかと言うと、設定しているマテリアルが見付からない時に表示されたり、時にはシェーダーだったり、つまりグラフィック関連が原因で起こります。

良く起こるパターンとしては、アセットがURPに対応していない場合に、URPでインポートしたりすると起こります。

Unityに何らかの異常が発生したわけでは無く、Unityが正常に異常を教えてくれているのだと考えましょう。

まず表示させるものを設定します。

Inspectorビューを見ると、結構な数の設定項目がありますが、一番下のRendererを開きます。

デフォルトでRendererにチェックが入っています。

InspectorビューのRendererを開く

その項目の中にMaterialがあります。

ここに表示するマテリアルを設定します。

Renderer内のMaterialで表示するマテリアルを設定する

オブジェクト選択画面でDefault-Particleを選択します。

オブジェクト選択画面でDefault-Particleを選択する

設定したらSceneビューにあるパーティクルの操作パネルでPlayを押して再生します。

Sceneビューにあるパーティクルの操作パネルでPlayを押して再生

するとショッキングピンクではなくなりました。

ショッキングピンクではなくなった

次はパーティクルの基本部分を設定していきます。

一番上にあるParticle Systemの直下の項目では、パーティクルの基本設定ができます。

パーティクルの基本設定部分

この項目は後で調整してみてください。

まずパーティクルの持続時間となるDurationを1にします。

Durationを1にする

次にStart LifetimeとStart Speedを両方1にします。

Start LifetimeとStart Speedを両方1にする

次にMax Particleを1にします。

Max Particleを1にする

そしてStop ActionをDestroyにします。

これでアニメーションが終了したパーティクルは自動的に破棄されるようになります。

Stop SctionをDestroyにする

一旦ここまでの状態を確認するために、Loopingのチェックを入れてSceneビューのパーティクルの操作パネルでPlayを押して再生します。

パーティクルの状態を確認

何となく近くなってきました。
この調子でいきましょう。

次のEmissionの項目に移ります。

Emissionを開いて、Rate over Timeを1にします。

Rate over Timeを1にする

次のBurstsに項目を追加します。

Burstsに項目を追加する

そしてCountを1にします。

Countを1にする

次はSize over Lifetimeにチェックを入れて有効にします。

Size over Lifetimeにチェックを入れて有効にする

そしてSizeのグラフを変更します。

一度グラフをクリックしておきます。
…が、変化しません。

これは分かり辛い事に、Inspectorビューの一番下に折りたたまれています。

Inspectorビューの一番下に折りたたまれている

このParticle System Curvesをクリックすると変更できるようになります。

Particle System Curvesをクリックすると変更できるようになる

手動で設定しても問題無いのですが、ここは始まりが最大で終わりが最小のカーブを選択します。

始まりが最大で終わりが最小のカーブを選択する

ではパーティクルの状態を確認します。
Sceneビューのパーティクルの操作パネルでPlayを押して再生します。

すると大分爆発に近くなりました。

パーティクルの状態を確認

あとは大きさを変えてやれば爆発に見えますね。

ではパーティクルの基本設定項目のStart Sizeを大きくして、確認のためにチェックしていたLoopingのチェックを外します。

今回はStart Sizeを5にしてみます。

Start Sizeを5にする

パーティクルの状態を確認

うん、良い感じになりました。

最後にExplosion_Playerをプレハブ化して、HierarchyビューにあるExplosion_Playerを削除します。

Explosion_Playerをプレハブ化して、HierarchyビューにあるExplosion_Playerを削除する

次回はこの爆発をプレイヤーと敵に設定していきたいと思います。

まとめ

今回は
  • パーティクルシステムを使って爆発のエフェクトを作成した
という事をやりました。

次回は、この爆発エフェクトをプレイヤーと敵に設定していきます。

では、また次回!

コメント