前回は、今回は Unity の Particle System コンポーネントで、パーティクルの色と大きさの変化を設定できる Color over Lifetime / Size over Lifetime コンポーネントを変更して、パーティクルの薬きょう画像が終盤に少しずつ透明になりつつ小さくなるアニメーションを設定できました。
色の変化をグラデーションで指定する Gradient フィールドの編集手順についても説明しました。
※この設定は、見下ろし型ゲームの作成支援アセット「TopDown Engine」のサンプル KoalaRifle の Shells ゲームオブジェクトの設定を参考にしています。
前回の記事:TopDownEngine薬莢PatricleSystem調査5/7 | Compota-Soft-Press
![Unity Particle System コンポーネントの Color over LifeTime モジュールのColorのグラデーション設定に従い終盤に少しずつ透明になりました.](https://compota-soft.work/wp1/wp-content/uploads/2023/06/Unity-Particle-System-コンポーネントの-Color-over-LifeTime-モジュールのColorのグラデーション設定に従い終盤に少しずつ透明になりました.png)
![Unity Particle System コンポーネントの Size over Lifetime モジュールの Size のカーブ設定に従い終盤に少しずつ小さくなりました.](https://compota-soft.work/wp1/wp-content/uploads/2023/06/Unity-Particle-System-コンポーネントの-Size-over-Lifetime-モジュールの-Size-のカーブ設定に従い終盤に少しずつ小さくなりました.png)
今回は、Unity の Particle System コンポーネントのうち、TopDown Engine のサンプル KoalaRifle の Shells で変更されていた Collision モジュールの既定値とサンプルの値との差分を調べ、壁などとぶつかるとすり抜けずに衝突・跳ね返るようにする設定について紹介します。
※ Unity のバージョン 2021.3.25f1、 TopDown Engine のバージョンは 3.2 です。
前回までの結果
前回は、Particle System コンポーネントの時間変化で色とサイズを変更できる Color / Size over Lifetime モジュールでグラデーションとカーブを設定して、落下後のパーティクルの薬きょう画像が終盤に少しずつ透明になりつつ小さくなるアニメーションを設定しました。
Collision モジュール
このモジュールの公式サイトの説明を引用します。
このモジュールは、シーン で パーティクル が ゲームオブジェクト とどのように衝突するかを制御します。最初のドロップダウンで衝突の設定を Planes か World どちらのモードにするかを設定します。World を選択する場合は、 Collision Mode ドロップダウンを使って衝突の設定を 2D か 3D のどちらに適用するかを決定します。
Collision モジュール – Unity マニュアル
![Unity Particle System コンポーネントの既定値とShellsの値の比較 Collisionモジュール](https://compota-soft.work/wp1/wp-content/uploads/2023/06/Unity-Particle-System-コンポーネントの既定値とShellsの値の比較-Collisionモジュール-1-1024x282.png)
全体 | 無効 → 有効 | このモジュールは既定値では無効でしたが、有効化されました。 |
Type | Planes → World | World モードを選択します。 |
Mode | 3D → 2D | 3D か 2D を選択します。 |
Dampen | 0 → 0.1 | 衝突の後、パーティクルを減速させるのに掛けられる少数の値。 |
Bounce | 1 → 0 ~ 1 | 衝突後に、表面から跳ね返るパーティクルに加わる力。 |
Radius Scale | 1 → 0.1 | 3D か 2D を選択します。 ↑誤植? ※ Unity エディタ上でホバーした際に表示されるツールチップには以下のように書かれています。 Scale particle bounds by this amount to get more precise collisions. (Google 翻訳) より正確な衝突を得るには、この量だけパーティクル境界をスケールします。 |
Collision Quality | High → Medium (Static Colliders) | ドロップダウンを使ってパーティクルの衝突判定の質を設定します。これは、コライダーを通り抜けるパーティクルの数に影響します。質が低いと、パーティクルはコライダーをときどき通り抜けてしまいます。しかし、計算の負担は軽くなります。 |
Colliders With | Everything → Obstacles | パーティクルは選択したレイヤーのオブジェクトにのみ衝突します。 |
Multiply by Collision Angle | ON → OFF | コライダーに力を適用するとき、パーティクルとコライダーの間の衝突角度に基づいて力を拡大します。グレージング角は正面衝突よりも小さな力を生成します。 |
※上図では、モジュールのプロパティ構成を合わせるために、Type プロパティは Planes から World に、Collision Quality は High から Medium (Static Colliders) に変更しています。
このモジュールを有効にすると、Colliders With プロパティでチェックしたレイヤー(Obstacles = 障害物) のコライダーに衝突するようになり、飛び出した薬きょうが壁にぶつかって跳ね返るアニメーションに変わりました。
![Unity Particle System Collision モジュールの有効化と設定の前後の、パーティクルの動きの比較.](https://compota-soft.work/wp1/wp-content/uploads/2023/06/Unity-Particle-System-Collision-モジュールの有効化と設定の前後の、パーティクルの動きの比較-1024x313.png)
モジュールを有効化・設定前
モジュールを有効化・設定後
複数のチェックが可能なフィールドの編集
Colliders With は複数のチェックが可能なフィールドです。
Shells の値は Obstacles なので、それ以外のチェックは外しました。
Nothing を選択すると全部のチェックが解除されるので、その後、ひとつの項目だけをチェックすると効率的です。
![Unity 複数チェックできるフィールドでサンプルと同じになるようにチェックを設定します.](https://compota-soft.work/wp1/wp-content/uploads/2023/06/Unity-複数チェックできるフィールドでサンプルと同じになるようにチェックを設定します.png)
テスト用の障害物の作成手順
簡単にテストするために、 TestWeapon プレハブ内に障害物のゲームオブジェクトを作成します。
Hierarchy ウィンドウの余白で右クリックしてメニューを表示して 2D Object > Sprites > Square で正方形のスプライト画像を持つゲームオブジェクトを作成します。
Scene ウィンドウで、パーティクルが通る位置に障害物を移動・変形して配置します。
![Unity Particle System Collision モジュールの効果を確認するために障害物のGOを作成しパーティクルが移動する途中に配置します.](https://compota-soft.work/wp1/wp-content/uploads/2023/06/Unity-Particle-System-Collision-モジュールの効果を確認するために障害物のGOを作成しパーティクルが移動する途中に配置します-1024x637.png)
Collision モジュールの Collider With プロパティでチェックしたレイヤー(Obstacles)に障害物のゲームオブジェクトの Layer を変更して、 Add Component で Box Collider 2D コンポーネントを付加すれば、障害物の完成です。
![Unity Particle System Collision モジュールの効果を確認するために障害物のLayerをObstacles(モジュールのCollider With と同様)を設定し、Box Collider 2D を付加します..](https://compota-soft.work/wp1/wp-content/uploads/2023/06/Unity-Particle-System-Collision-モジュールの効果を確認するために障害物のLayerをObstacles(モジュールのCollider-With-と同様)を設定し、Box-Collider-2D-を付加します.png)
薬きょうのパーティクルを設定している同プレハブ内のゲームオブジェクトを再び選択してから Scene ウィンドウに表示される Particle ウィンドウで Play ボタンを押して、先ほどと同じようにパーティクルが障害物にぶつかり跳ね返る動作をテストしてみましょう。
テスト用の障害物の削除
Collision モジュールにより障害物にパーティクルが衝突することを確認したら、先ほど追加した障害物ゲームオブジェクトは削除してプレハブを保存してください。
今回はここまで
今回は、Unity の Particle System でパーティクルの衝突について設定する Collision モジュールについてサンプルとの差分を中心に比較して、飛び出した薬きょうが壁にぶつかると跳ね返ってくる動作を行う設定について紹介しました。
そのための障害物の設置の例も説明しました。
※サンプルは、見下ろし型ゲームの作成支援アセット「TopDown Engine」のサンプル KoalaRifle の Shells ゲームオブジェクトの設定を参考にしています。
参照サイト Thank You!
- Unity のリアルタイム開発プラットフォーム | 3D/2D、VR/AR のエンジン
- TopDown Engine | システム | Unity Asset Store
- Collision モジュール – Unity マニュアル
記事一覧 → Compota-Soft-Press
コメント