【Unity】Water2Dをアレンジする

2020/4/5全面修正


背景設定ができないので、
試行錯誤していましたが、答えが見つかりません。

なので、背景が使えるサンプルの流用を試したので
記事を差し替えます。

削除前の記事を参考にされていた方がおられたら申し訳ありません。
(_ _(--;(_ _(--; pekopeko



では、新しくアレンジを紹介していきます。

Water2D→SCENEを開いて、サンプルを選択します。
今回は、ExampleSceneを使ってみます。
Water㊹.jpg
開いたサンプルを名前を付けて保存で、Sceneのコピーを作ります。

Water㊺.jpg
今回は、ArrangeTestとしておきます。

このサンプルにはCanvasが設置されているので、
アクティブ化して、android設定に変更していきます。
Water㊻.jpg
レンダーモードをスクリーンスペース・カメラに変更

Water㊼.jpg
レンダーカメラにはCameraオブジェクト内の2-DefaultCameraをアタッチします。
画面比率は16:9Landscapeを適用するので、
スケールモードを画面サイズに拡大にして、
1280×720サイズ、マッチングを縦方向の1にしておきます。

これでスケーラーが働くので、カメラ境界にブロックを置いて検証すると…

16:9Landscape
Water㉓.jpg

18:9Landscape
Water㉔.jpg

19:9Landscape
Water㉕.jpg
無事にスケーラーが機能しています。
これで画面調整がやりやすいかと思います。

Canvasの設定は終わったのですが、
このままでは、UIを追加しても画面に反映されません。
サンプルを見てもらえるとわかるのですが、

CanvasにはTextがセットされていて
Water㊽.jpg
シーンビューでは、こんな感じに表示されています。

ところがゲームビューでは、
Water㊾.jpg
元々のサンプルでは、カメラのカリングマスクがDefaultになっている為、
UIが無視される形になります。

なので、2-DefaultCameraのカリングマスクを設定します。
Water㊿.jpg
2-DefaultCameraの初期値はDefaultレイヤーのみになっているので、
UIにもチェックを入れます。

カリングマスクなんですが、
カメラは指定したレイヤーのみを表示する事ができます。

通常、新規Sceneを立ち上げるとMaineCameraが設置されますが、
このMaineCameraのカリングマスクはEverythingになっています。
これは設定されている全レイヤーを表示すると言う設定です。

Water2Dでは、EffectやBGのカメラを複数使用しているので、
カメラ毎にどのレイヤーを表示させるか指定されています。

なので、DefaultCameraは、DefaultレイヤーとUIレイヤーを表示させるようにします。
このカメラでEverythingにすると
Water51.jpg
粒子が表示されたり、背景が浮き上がるなどの不具合があるので、おすすめしません(;^_^A

これでUIの表示もできるようになったので、
オブジェクトをイジって行きます。

まずは背景から
Water52.jpg
ヒエラルキーのrocksを見るとスプライトがあります。
これが背景スプライトになります。

カラーの設定を見ると透明度が高い設定になっています。
Water53.jpg
透明度を下げて、スプライトを変更すると

Water54.jpg
こんな感じの背景に変える事ができます。

UIのImageで背景を作ると、
カメラの描写上、UIが一番手前で描画されるため、水はUIの裏に隠れてしまいます。

なので、サンプルのスプライトを入れ替えてカラー調整すれば
水より後ろに描画してくれます。


つづいて、オブジェクトを追加します。
サンプルのオブジェクトをすべて削除して、UIでオブジェクトを追加してみます。
Water55.jpg
ブロックを作って、BoxColliderをセットします。
複製を作って、フロアを作ります。

この状態でPLAYすれば、
Water56.jpg
水がブロックで溜まるようになります。

ただ、一点注意があります。
BoxColliderやCircleColliderの場合、ある条件下では、水粒子が消えてしまいます。

前回、水の射出方向について書きましたが、
Water57.jpg
Xの値で左右方向が調整できます。
この値を0に設定して真下に落とすと
Water58.jpg
水が消えてしまいます。
なので、真下に落としたい時は0.1くらいの設定にしておくとハマりません。

あと、PolygonColliderならXを0にしても受ける事ができます。

Water㉚.jpg
分かりにくいですが、Polygonを入れてます。

動かしてみると
Water㉛.jpg
機能しています。

PolygonColliderは、処理が重いことや設定が面倒な所があるので、
射出量の調整で対応した方が楽な感じです。

これで、Objectの設定などができるので、ガンガン追加して行きましょう(^.^; オホホホ


さて、水粒子のライフタイムですが
Water㉜.jpg
レンジを見ると最大100秒までしか設定できません。

1分40秒ですね。

ゲームによっては、オーバーする可能性もあります。
そこでレンジを修正します。

Water2Dフォルダの中のCoreフォルダを開きます。
Water㉝.jpg
Water2D_Spawner.csが格納されているので編集します。

スクリプトを開くと
Water㉞.jpg
初期値はこんな感じになっています。

なので、100fの部分を好きな数値に変更すると
最大値が編集できます。

今回は、5分を最大値に設定してみます。
Water㉟.jpg
300秒に設定して、上書き保存します。

Objectのレンジを確認すると
Water㊱.jpg
無事に最大値を更新できました。

これでゲームによっては、ライフタイムを調整できるようになります。

この設定で大たい使えるかな~ と思います。
参考にしていただけると幸いでっす。


最後に、押さえておくと何となく幸せになれる部分なんですが、
粒子サイズ&Delayタイム、背景色の設定について少々。

粒子サイズやDelayタイムの設定ですが、
粒子サイズは基本触らないほうが安定します。

小さすぎると流れてる時は良いのですが、
溜まった時に流れ込んだ水の量に対してカサが低くなるので、
違和感がでます。

この辺りは、実際に調整しながら設定する方がいいと思います。

Delayタイムは、水の出方が変わるので視覚的にぽたぽたと垂らしたい時は、
長めに設定して、ザーと流す時は、早め設定するといいかと思います。

Delayタイム0.01秒
Water㊲.jpg

Delayタイム0.3秒
Water㊳.jpg
この辺りを自分流で調整すればいいかと思います。

後は、背景色なんですが、
Water㊴.jpg
0-BGCameraの背景が反映されます。

BGはバックグラウンドの略だと思います。

背景のカラーを操作すると好きな色に変更できます。

ま、背景オブジェクトのスプライトを変更すれば、関係ないのですが
(V)o¥o(V)ふぉふぉふぉ(V)o¥o(V)

これでいろいろと遊べるようになるかと思います。
皆さんも時期は早いですが水遊びしてみてはいかがでしょうか。

今回はこのへんで~
(o・・o)/~マタネェ



追記
削除前の記事を参考にされていた方がいれば申し訳ありません。

少しでも楽に使えるように考えていたら、
サンプルの流用になってしまいました。

まだまだ、使いこなせない部分があるので、
分かれば新記事で上げたいと思います。
m(_ _)m ゴメンナサイ

この記事へのコメント