【Unity】Water2Dで遊ぶ

新型コロナに振り回されている今日この頃ですが、
皆さん大丈夫でしょうか。

人の集まる場所に寄らないのが賢明かと思います。
また手洗いが大事とか、日ごろの手洗い習慣が生きてきます。

自粛ムードが漂う中、
こんな時こそ、家に籠ってプログラムの勉強をするのがいいかな…

なんて思う今日この頃なんですが、一日も早く撲滅を願っています。



さて、本題に移るのですが、
水を使ったゲームがありますよね。

ケロは、一時期ハッピーグラスにハマっていました。

水の動きって独特なんですが、どうやって作るのか疑問に思っていました。

調べると、レンダリングやシェーダーと言う言葉が見つかります。
正直、ぜんぜんわかりません(?+_+)

ま、今後の勉強課題として取っておきます(°-°;)ヾ(-_- ;) シモシモ・・


そんなUnity情弱のケロにも手軽に実装できるassetがあるようで、
その名もWater2D
無料assetで水遊びができるとは、世も末です。(V)o\o(V)ふぉふぉふぉ

早速インポートして遊んでみたいと思います。

まず、assetstoreから検索でっす。
Water①.jpg
プロ版は有料なんですな。
間違えずに無料版をポチっと押します。

インポートについては端折りますが、インポートが終わると
Water②.jpg
Water2Dのフォルダが出来ているかと思います。

この中のSCENESを開くと
Water③.jpg
サンプルのSceneファイルが5つ程あります。

左からオイル、水、水2、水3、水4
Sceneサンプルがあります。

基本的には、オイルと水の違いとColliderに当たった動きなどが確認できます。

早速、流用できるか遊んでみたいと思います。

水遊びをするのに準備が必要となるので、
簡単にまとめます。

・新しいSceneを作成してメインカメラを削除
・カメラプレハブをScene内に配置する
・蛇口のWater2D_Spawnerを配置する
・水粒子または、オイル粒子のDropを配置する

Water⑥.jpg
配置はフォルダ内のプレハブをヒエラルキーにアタッチすればOKでっす。
配置するとスクショのようになってるかと思います。
今回は水粒子を使ってみます。

このままでは動作しないので、初期設定をしていきます。

まず、水粒子のPhysics Materialsを設定します。
Water⑬.jpg
WaterDropをクリックしてインスペクターを見ると
RigidbodyとColliderがあります。
この二つのマテリアルに水の性質を追加します。
丸ボタンを押せばマテリアルの一覧が表示されるので、今回はRegularを選択します。

マテリアル設定が終わったらWaterDropのチェックを外して非アクティブにしておきます。
Water⑭.jpg

続いて、Water2D_Spawnerの設定をします。
Water⑦.jpg
WaterDropObjects これは、水粒子または、オイル粒子のプレハブを格納する変数です。
WaterMaterial これは、3Dではおなじみのマテリアルです。

この二つを設定します。

まず、WaterDropObjectsから
Water⑧.jpg
最初に配置したWaterDropをWaterDropObjectsの文字の上にアタッチします。

アタッチするとサイズと要素0が追加されます。
要素0にはWaterDropが入っている状態になります。

これでPLAYすると水が一粒生成されます。


サイズは粒の数になるので、この状態でサイズのみ変更します。
今回は、100にします。
Water⑨.jpg
サイズを変更すると自動的に要素を用意してくれるようです。

続いて、WaterMaterialを設定します。
Water⑩.jpg
マテリアルの選択部分に丸のボタンがあるのでクリックすると
SelectMaterialが開くと思います。

この中にあるAlphaCutoutを選択します。

SelectMaterialが開かない場合は、Water2Dフォルダの中にMaterialsと言うフォルダがあるので、
その中にAlphaCutoutがあるので、アタッチしてもOKでっす。

これで準備ができたので、PLAYしてみます。
Water⑪.jpg
水が出ました…  が斜めになってます。(ToT )( ToT) ウルウル

真っ直ぐに出したいので、調整します。
Water⑫.jpg
Water2Dの下の方にInitSpeedの項目があるので、ここを調整します。

単純に射出方向ととらえればいいかと。

X軸を調整すると左右方向に、Y軸を調整すると上下に射出調整ができます。
数値の大きさで水の勢いが変わります。

今回は真下に出すのでX軸のみ0に変更します。

これで準備ができたので、遊んでみたいと思います。

新しくObjectを作ってColliderを設置して、できたのがこちら
Water⑮.jpg
コップの絵が幼稚園レベル(T^T) ヒック
絵が酷いのは忘れて下さい。

ハッピーグラスの様にコップに水を受けてみたいと思います。
動画を作ったのでどうぞ

コップまで水が届かない ( ゜.゜) ポカーン

Water⑯.jpg
実は、Water2Dは水の粒子をエフェクトカメラを通して
水の様に見えるようにしています。

この粒子一粒がWaterDropとなります。

WaterDropは、
・画面中の粒子の数
・粒子の大きさ
・粒子のライフタイム
・粒子の生成間隔

4つを設定できます。

画面中の粒子の数は、上で設定した100粒になります。

残り3つの設定は
Water⑰.jpg
この部分を変更すれば変える事ができます。

コップに水を溜めたいので、ライフタイムを10秒にしてみます。

無事に溜める事ができました。ヽ(´▽`)/~♪

ライフが10秒なので、10秒過ぎれば粒子は消滅します。
消滅して数が減った分は、新しく蛇口から供給される仕組みなんですね~

このassetは、いろいろと遊べそうでっす。

もう少し遊んでみて、調整できた事などを
次回ブログでまとめてみたいと思います。

それでは、皆様コロナに注意しながら
よりよいプログラムライフを満喫して下さい (^.^/)))~~~bye!!

この記事へのコメント