前回は、Unity の見下ろし型ゲームの作成支援アセット「TopDown Engine」のサンプルの銃 KoalaRifle を参考にして、銃を撃ったときの薬きょうパーティクルが飛び出す際の器となり、放出の動きをその器に沿わせたり発生範囲を決める Shape モジュールについて差分を中心に調べて、変化を確認しました。
前回の記事:TopDownEngine薬莢PatricleSystem調査3/7 | Compota-Soft-Press
今回は、Unity の Particle System コンポーネントのうち、TopDown Engine のサンプル KoalaRifle の Shells で変更されていた Limit Velocity over Lifetime モジュールのサンプルとの差分を調べ、パーティクルの速度(例では落下速度)を時間経過で制御する方法について紹介します。
※ Unity のバージョン 2021.3.25f1、 TopDown Engine のバージョンは 3.2 です。
前回までの結果
Particle System コンポーネントの
- メインモジュールで重力や速度・角度のランダムさを設定し
- Emission モジュールで放出するパーティクル(薬きょう画像)のタイミングや個数を設定し
- Shape モジュールでは放出の際に用いる器の形(円錐:Cone)を上向きに設定することで、1回の動作で1個のパーティクルが上方向に放出されるように設定し
薬きょうが放物線を描いて落下するようになりました。
Limit Velocity over Lifetime モジュール
このモジュールの公式サイトの説明です。
パーティクルの速度の変化を指定できます。
このモジュールでは、生存期間にわたってパーティクル速度がどのように減衰するかを制御します。
Limit Velocity Over Lifetime モジュール – Unity マニュアル
このモジュールは既定値では無効化されていて、Shells で有効化されています。
Speed | 1 → カーブ | パーティクルの速度制限を設定します。 |
Dampen | 0 → 1 | 速度の制限範囲を超えると、パーティクルの速度を減衰します。 |
※カーブのフィールドの編集については後述します。
速度の変化を比較するために一時的に Particle System コンポーネントのメインモジュールの初期速度と角度を一定にします。しかし、何回か放出すると角度が異なります。
そこで、Shape モジュールも Burst Spread で発生場所をわずかですが均一にずらしたり、器の形状で影響を受けていると推測し、全体を無効にしました。
メインモジュール | Start Speed | 5 ~ 7 → 5 |
メインモジュール | Start Rotate | -20 ~ 20 → 20 |
Shape モジュール | 全体 | ON → OFF |
この状態で、このモジュールの既定値(無効)と Shells の設定を行った状態(有効で、Speed のカーブや減衰を設定)を比較すると、既定値は落下し続けますが、Shells の設定では Speed をカーブによって急変させていて途中で停止しました。
これは薬きょうが地面に落ちて止まった表現だと思います。
速度の違いなどを比較するために、先ほど一時的に変更していた他のモジュールの値を元に戻して、このモジュールを設定したあとの動作を確認しましょう。
このモジュールの Speed の変化を設定する前は、落下し続けていましたが、一定時間経過後に Speed を 0 にするカーブの設定で、一定時間経過後にパーティクルの移動(落下)が停止するようになりました。
カーブのフィールドの編集
Limit Velocity over Lifetime モジュールの Speed は数値やカーブを右側の▼ボタンから選択できます。
今までも同様のものはありましたが、今回初めて TopDown Engine の Particle System コンポーネントのサンプルの値としてカーブが出てきたので、その編集について紹介します。
サンプルのカーブをコピーして貼り付けたい場合は、カーブのフィールドを右クリックすると Copy , Paste のメニュー項目が表示されるので、コピー・ペーストしたいカーブのフィールドでメニューを選択しましょう。
フィールドのカーブも線が表示されていますが、細かく、時間軸などもはっきりわかりません。
カーブのデータを詳しく見たり編集する場合は、Particle System コンポーネントのカーブの場合、Inspector ウィンドウの一番下にある Particle System Curves の二重線をクリックすることで、編集画面が表示されます。
あとは、編集したいカーブのフィールドを Particle System の中で選択すると、その編集画面にカーブが拡大されて表示されます。
今回はここまで
今回は Unity の Particle System コンポーネントの Limit Velocity over Lifetime モジュールを有効化して、パーティクルの速度の変化を速度と時間のカーブで設定して、途中でパーティクルが停止する処理を実装しました。
Particle System のプロパティのカーブのフィールドの編集画面の開き方やコピー&ペーストの手順についても説明しました。
見下ろし型ゲームの作成支援アセット「TopDown Engine」のサンプル KoalaRifle の薬きょうアニメーションを実装している Shells ゲームオブジェクトの設定を参考にしました。
参照サイト Thank You!
- Unity のリアルタイム開発プラットフォーム | 3D/2D、VR/AR のエンジン
- TopDown Engine | システム | Unity Asset Store
- Limit Velocity Over Lifetime モジュール – Unity マニュアル
記事一覧 → Compota-Soft-Press
コメント