今回は、 Unity で細かな粒子をたくさん放出させられる Particle System の粒子1つ1つの画像を水平反転させて表示させる設定と、粒子群を放出させる向きを反転させる設定を紹介します。

※ Unity のバージョンは 2021.3.25f1 Personal <DX11> です。
※表示されている 3D モデルは無料アセット「Old Sea Port」を使用しています。
サンプルの Particle System は波しぶき (左側)
サンプルは、以前に作成した波しぶき(左側)の Particle System です。
これの粒子(水滴)の画像を左右に反転し、放出される方向も左右に反転させることで、波しぶき(右側)の Particle System を作成します。
以前の記事:
- Unity ParticleSystemで船が進むときの波しぶきを作成1/3 | Compota-Soft-Press
- Unity ParticleSystemで船が進むときの波しぶきを作成2/3 | Compota-Soft-Press
- Unity ParticleSystemで船が進むときの波しぶきを作成3/3 | Compota-Soft-Press
左側にうっすらと表示されている水滴の半透明の画像群は、左側を向いている水滴なので、これを右側に水平反転します。

粒子群が放出される方向を左後方から右後方に変えます。

波しぶき(左側)の Particle System をプレハブ化
反対側の波しぶき(右側)の Particle System は、作成済みの波しぶき(左側)の Particle System のプレハブインスタンスとして作成します。

プレハブインスタンスとして作成する理由は、後で波しぶきのパラメータを調節する際に、プレハブの Overrides の機能で、片方の波しぶきの変更を、もう片方の Particle System にも一括で反映させるためです。
コピーしただけのゲームオブジェクトでは、 Overrides が使えず、パラメータを調節する際に、二つの波しぶきに同じ変更をそれぞれ行わなければならず効率がよくありません。
プレハブインスタンスの関連記事
Prefab Instance については、以下の記事をご覧ください。


プレハブインスタンスをボートの右側に配置する
波しぶき(左側)のプレハブを Scene にドラッグ&ドロップして、波しぶき(右側)のプレハブインスタンスを作成します。

一度、波しぶき(左側)と位置や角度を合わせるため、 Inspector ウィンドウで Transform の Position 、Rotation のあたりを右クリックしてコピーしたものを、波しぶき(右側)の同じプロパティにペーストします。

位置をあわせてから、ボートの先端を境界にして左右対称になるように右側に移動させます。
※もしも、うまくいかなかったら、手動で微調整した後で、 Y 軸などを再び合わせるようにしましょう。
の位置を-Z-軸方向だけずらします。.gif)
を左側のものと同じ位置にしてから右側に移動します.png)
波しぶき(右側)の位置は調整しましたが、粒子(水滴)の画像は左向きで、放出方向も左後方です。

波しぶきの粒子画像の水平反転
試行錯誤の結果、 Particle System のメインモジュールの Flip Rotation と、 Renderer モジュールの Flip (X, Y, Z) を変更することで、粒子の画像を水平反転して表示することができました。
Particle System メインモジュール – Unity マニュアル
フリップ回転 いくつかのパーティクルを反対方向にスピンさせます。
Renderer モジュール – Unity マニュアル
Flip 指定された軸に沿ってパーティクルの一部をミラー (反転) します。 値を大きくすると、より多くのパーティクルを反転します。
これらの値は 0.0 ~ 1.0 の値をとり、反転させる粒子の割合を指定します。
既定値の 0 では全く反転せず、1 ならば全ての粒子の画像が反転します。
メインモジュールの Flip Rotation を 1 に、 Renderer モジュールの Flip の X を 1 に変更します。

粒子(今回は水滴)の画像が水平反転して、右を向いて飛んでいる画像に変わりました。

波しぶきの粒子群の放出方向を左後方から右後方に変更
左後方から右後方に変更するため、Particle System を含むゲームオブジェクトの水平な回転軸を 90 度右側にずらします。
Scene ウィンドウの回転ツールを選択すると 3 つの回転軸が色分けされて表示されます。
水平な回転軸は緑色の Y 軸でした。

Inspector ウィンドウで Rotation の Y の値を 90 減らします。
例では、波しぶき(左側)は 106.486 だったので、波しぶき(右側)は 16.486 に変更しました。
.png)
Hierarchy ウィンドウで両方の波しぶきの Particle System を複数選択すると、Scene ウィンドウで両方が再生されます。
ボートの先端を境界線にして左右対称に波しぶきが放出されました。

テスト
先ほどのように Hierarchy ウィンドウで、波しぶきの2つの Particle System のゲームオブジェクトを複数選択してから Game ウィンドウを見ると、波しぶきが左右に放出され、水滴の画像も右と左で水平反転しています。

まとめ
今回は、 Unity で細かな粒子をたくさん放出させられる Particle System の粒子1つ1つの画像を水平反転させて表示させる設定と、粒子群を放出させる向きを左右対称にさせる設定を紹介しました。
水平反転するためには、メインモジュールと Renderer モジュールのプロパティを組み合わせることもわかりました。
参照サイト Thank You!
- Unity のリアルタイム開発プラットフォーム | 3D/2D、VR/AR のエンジン
- パーティクルシステム – Unity マニュアル
- Particle System メインモジュール – Unity マニュアル
- Renderer モジュール – Unity マニュアル
記事一覧 → Compota-Soft-Press
コメント