おもちゃラボ

Unityで遊びを作ってます

【Unity】広重のような雨のエフェクトを作る

歌川広重の描いたような雨をUnityで降らせる方法を紹介します。地面に雨粒があたったときは、そこから波紋が広がるようにします。完成版は↓こんなかんじです〜

ちなみに歌川広重の超有名な雨の絵はこんな感じ。「名所江戸百景 大はしあたけの夕立」ってやつです。臨場感というか質感がすごいですね。

f:id:nn_hokuson:20190704210353j:plain:w300 
出展:wikipedia

ここでは次の流れで雨のエフェクト作っていきます。まずは雨粒が落下するパーティクルを作成し、次に波紋のパーティクルを作ります。最後に地面に雨粒があたったときに波紋が広がるようにします。

雨粒を作る

Unityで雨を作るにはParticle Systemを使います。生成するパーティクルには次のテクスチャを使用します。

f:id:nn_hokuson:20190704211549p:plain:w150

まずはパーティクルに使うマテリアルを作ります。プロジェクトウィンドウで右クリックして、「Create」→「Material」を選択してください。名前はrainにしておきます。

f:id:nn_hokuson:20190704203640p:plain:w200

次に作成したマテリアルを選択して、Shaderを「Particles/Standard Unlit」に設定、Rendering Modeは「Fade」、Albedoにはrainのテクスチャをセットします。

f:id:nn_hokuson:20190704203854p:plain:w400

ヒエラルキーウインドウで「Create」→「Effect」→「Particle System」を選択してパーティクルを作成します。雨のテクスチャが表示されるように[Render]のMaterialにrainマテリアルをセットしてください。また、雨が垂直に表示されるようにRender Modeは「Vertical Billboard」を選択します。

f:id:nn_hokuson:20190704204016p:plain:w400

雨が振り続けるように[Emission]のRate over Timeを「300」に設定します。また、雨を広範囲に降らせるため、[Shape]ののShapeを「Circle」、Radiusを「14」に設定します。

f:id:nn_hokuson:20190704204216p:plain:w300 f:id:nn_hokuson:20190704204420p:plain:w300

まだ雨粒が外側に広がって全然雨っぽくないですね・・・

f:id:nn_hokuson:20190704204257j:plain:w500

雨を下方向に降らせるための設定をしていきます。DurationとStart Lifetimeは「2」に設定します。雨粒がに円の外周に向かって広がらないようにStart Speedを「0」にします。雨粒を縦方向に伸ばすために3D Start Sizeを(1,3,1)にします。最後に雨粒が下方向に落下するようにGravity Modifireを「1」に設定します。

f:id:nn_hokuson:20190704204601p:plain:w400

ぐっと雨っぽくなりました。

f:id:nn_hokuson:20190704204641j:plain:w500

次は地面を設置して地面にあたったときは雨粒が消えるようにしましょう。ヒエラルキーウインドウでPlaneを生成して、いい感じに配置してください。

f:id:nn_hokuson:20190704204954j:plain:w500

パーティクルが地面にあたったら消えるようにします。[Collision]のTypeを「World」に設定し、Lifetime Lossを「1」にします。

f:id:nn_hokuson:20190704204846p:plain:w400

これで地面に当たると雨のパーティクルが消えるようになりました。

 f:id:nn_hokuson:20190704205007j:plain:w300

波紋を作る

雨粒が地面にあたったときに広がる波紋のパーティクルを作ります。波紋のパーティクルは1つだけ作っておいて、雨粒が地面にあたったときに生成されるように、雨粒のパーティクルのSub Emitterに設定します。

波紋には次の円のテクスチャを使用しました。

f:id:nn_hokuson:20190704211721p:plain:w150

まずは波紋に使うテクスチャをインポートして、雨粒と同じように波紋のマテリアルを作成してください。

f:id:nn_hokuson:20190704205111p:plain:w200

波紋用のパーティクルを新しく作成し、そこに波紋のマテリアルを設定します。波紋は地面と平行に広げたいのでRender Modeは「Horizontal Billboard」に設定します。

f:id:nn_hokuson:20190704205153p:plain:w400

地面から波紋のパーティクルが湧き出てきます・・・

f:id:nn_hokuson:20190704205213p:plain:w400

波紋はすぐ消えるようにDurationとStart Lifetimeを「0.8」に設定します。また波紋が上方向に広がらないようにStart Speedを「0」にします。

f:id:nn_hokuson:20190704205348p:plain:w400

波紋の生成個数が1個になるように[Emission]のRate over Timeを「0」、BurstsのCountを「1」に設定します。また、常に中心にパーティクルが生成されるように[Shape]のRadiusは「0.01」に設定してください。

f:id:nn_hokuson:20190704205455p:plain:w300 f:id:nn_hokuson:20190704205523p:plain:w300

波紋が徐々に広がって消えるようにします。波紋を広げるには[Size over Lifetime]を線形に増加するグラフに設定して、sizeを「3」に設定しました。

f:id:nn_hokuson:20190704205606p:plain:w400

また、波紋が徐々に消えるようにするため、[Color over Lifetime]で右端の透明度を「0」に設定します。

f:id:nn_hokuson:20190704205551p:plain:w400

これで徐々に透明になりながら広がる波紋ができました。

f:id:nn_hokuson:20190704205628g:plain:w400

波紋のパーティクルをSub Emitterに指定

最後に雨粒が地面にあたったときに波紋が生成されるように、波紋のパーティクルを雨のパーティクルのSub Emitterに設定します。

雨のパーティクルの[Sub Emitter]のドロップダウンリストを「Collision」に変更して、右の欄に波紋のパーティクルを設定します。

f:id:nn_hokuson:20190704205754p:plain:w400

波紋のパーティクルが雨粒パーティクルの子要素になっていればOKです。

f:id:nn_hokuson:20190704205902p:plain:w250

これで雨粒が地面にあたったら波紋が表示されるようになりました。実行して確かめてみてください。

f:id:nn_hokuson:20190704210017j:plain:w600