(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]



海や湖などに使える水面の反射や波を表現する2D用水シェーダー WaterRW【Unity】【Shader】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2018.4.13f1


はじめに

WaterRWというUnityで使える2D水シェーダーが公開されたので、

今回はそれを試してみようという感じの記事です!



なお、3Dで水の表現をしたい場合は以下のアセットがオススメです。

f:id:kan_kikuchi:20200410074552g:plain


ちなみに、記事中では以下のアセットを使っています。(画像だけ)

Corgi Engine - 2D + 2.5D Platformer | Systems | Unity Asset Store




導入

WaterRWにはBurstが使われているので、まずはその導入から。

Burstの導入にはお馴染みのPackage Managerを使います。

f:id:kan_kikuchi:20191213074420j:plain


導入と言ってもInstallボタンを押すだけですが、

Burstはまだpreview版なので、AdvancedのShow preview packages

を有効にする必要がある点には注意が必要です。

f:id:kan_kikuchi:20200211071219j:plain


あとはWaterRWのリリースページからWater-RW.unitypackageをダウンロードしてきて、

それをプロジェクトに展開するだけ。


github.com

f:id:kan_kikuchi:20200211070902j:plain


とりあえずサンプルシーン(Sample.unity)を動かしてみると、

f:id:kan_kikuchi:20200211071717j:plain


最初のツイートにもあったシーンで白い玉を自由に動かせます。

水に写ったような歪んだ反射も玉が跳ねた時の波も自然で最高ですね……!

f:id:kan_kikuchi:20200211105837g:plain



使い方

WaterRWを自分のプロジェクトで使いたい場合はWater-RWというPrefabをシーンに配置するだけでOK。

f:id:kan_kikuchi:20200211105817j:plain


Water-RWは普通のオブジェクトと同様に

位置やスケールを動かす事で水の場所や範囲を変更出来ます。

f:id:kan_kikuchi:20200211171659g:plain


たったこれだけで、他のレンダラーが反射されますし、

当たり判定(Rigidbody2d+Collider2D)を持ったオブジェクトがぶつかれば、波を立てるようになります。

f:id:kan_kikuchi:20200211174147g:plain


なおWater-RWについてるWater R Waverやマテリアルで各種設定も可能です。

なお、各設定の詳細についてはGitHubのReadmeを参照の事。

f:id:kan_kikuchi:20200211172108j:plain


ちなみにWaterRWの計算は常に実行されているらしいので、

必要ない場合や画面外にある場合は無効にした方がよいそうです。


水の浮力等の表現

WaterRWはあくまで水の見た目の演出であって、水の浮力等を表現するものではないので、

そういう物を実装したい場合は以前紹介したBuoyancyEffector2Dを使うと良いかもしれません。

f:id:kan_kikuchi:20160225075506g:plain


例えば、Water-RWにそのままBoxCollider2DとBuoyancyEffector2Dを付けてみると、

f:id:kan_kikuchi:20200211180938j:plain


見た目も相まってかなり水らしい動きになります……!

f:id:kan_kikuchi:20200211181326g:plain



おわりに

もの凄い簡単に使えて、しかも無料でここまでクオリティは

まさに神シェーダーと言った感じでした……!