2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Unity】Water Ripple For Screenを使ってみた

Posted at

はじめに

WaterRippleForScreenはUnityで水の波紋を表現できるJose Hernandez氏作のアセットです。無料!!
リンクはこちら

ゲームを作成しているときに「水の波紋みたいなエフェクトできたらエモくね?」となったのですが、シェーダーの知識が全く無かったために自分で作成することができなかったのでアセットに頼ろうと調べていたときに見つけました。
このアセットに関して日本語で書かれた記事を発見できなかったので備忘録を兼ねてかいていきます。

利用方法

基本

アセットのインストール方法に関しては他の方がわかりやすく説明しているため、自分のプロジェクトにインポートできている前提で話をすすめます。
インポートすると、Assetsフォルダの中にWaterRippleForScreenというフォルダが作成されます。

まずは、WaterRippleForScreen/Scripts/に存在するRippleEffectsをエフェクトを適用したいCameraに貼り付けます。
image.png

背景の画像を適当に入れて、DetectClickにチェックを入れて実行し、ゲーム画面をクリックしてみてください(下の画像は見やすいようにWaveScaleを30にしています。)
ezgif.com-video-to-gif.gif

このように水の波紋のような効果をかけられるのがこのアセットの効果です。

スクリプトから呼び出す場合は以下のようにします。
まず、忘れては行けないのが

using WaterRippleForScreens;

今回はスペースキーの入力があったら波紋を呼び出すようにしていきます。
以下のスクリプトを適当なゲームオブジェクトにアタッチしてください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using WaterRippleForScreens;

public class hogehoge : MonoBehaviour
{
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Camera cam = Camera.main;
            Vector2 target = new Vector2(0, 0);//Unity上の座標
            target = cam.WorldToScreenPoint(target);//カメラ座標に変換
            target.y = Screen.height - target.y;//WRFS用に座標を変換
            cam.GetComponent<RippleEffect>().SetNewRipplePosition(target); //新しい波紋を生成
       }
    }
}

RippleEffectのSetNewRipplePositionに__画面座標を上下反転させたもの__を渡すことで波紋を生み出せます。
(DetectClickモードでもクリックした箇所の上下反転に波紋が生み出されるので多分上下反転はバグだと思われます。)

エフェクトの調整

以下の変数はすべての波に対して適応されますのでご注意ください。波ごとに個別の設定を行うことはできませんでした。
もしかするとCameraに波の生成ごとにスクリプトからコンポーネントを追加して設定すればうまくいくかもしれません。(未検証)

DitectClick

はじめにも利用したクリックした座標(を上下反転させた座標)に波紋を生み出します。クリックを利用するプロジェクトではどこでも生み出されてしまうため、falseにしておくことをおすすめします。

WaveCount

画面に表示させる波の最大数

TimeInfinity

trueにすると画面にずっと波が表示され続けます。

WaveTime

そろぞれの波の時間が秒単位で設定できます。

WaveAnimCurve

時間経過に伴う波の挙動を決定します。0~1に収まるようにしないとおかしなことになります。

WaveScale

波の強度。ここが大きいと画面が大きく歪むようになります。

WaveScale

波の速度。

WaveFrequency

波の周波数。値が大きいほど波と波の感覚が狭まります。

CiecleXYScale

異なる値を設定することで波を楕円形にできます。

InternalRadio & ExternalRadio

image.png
image.png
画像はWaterRippleForScreenフォルダ内部に生成されるpdfよりお借りしております。
Internalの内部には波が生まれず、Internal以上Internal+External未満に波が表示され、それ以上には波が生まれません。

その他

RippleGeneratorというスクリプトも同梱されており、こちらでは自動で波を発生させられるらしい。
このエフェクトは画面に映るもの全てを歪ませてしまうため、少々使い勝手が悪そうなので今回はパスします。

参考

Asset Storeのダウンロードページ

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?