青空の月

Unity, C#, アプリ開発関連について。

画面全体に対して特殊効果をかける(Pro専用)

Unityでこんな感じにカメラに写ってるものに対して渦のように描画を表現したい場合、Proバージョンならとても簡単に使える。

RPGの敵とエンカウントした時とかによく見るエフェクトかな。

f:id:masa795:20130929191041j:plain

 

ちなみにエフェクトをかけていない場合の元の画面はこんな感じ。Planeに画像貼っただけのオブジェクトと2Dだけじゃなくて3Dのオブジェクトも有効なのか、Cubeも置いてみた。

f:id:masa795:20130929191358j:plain

 

 

「Image Effects (Pro Only).unityPackage」を選択してプロジェクトを作るか、「Unity\Editor\Standard Packages」フォルダ内にあるunityPackageをインポートする。

f:id:masa795:20130929195811j:plain

 

 

今回は、VortexEffect.csを使用する。VortexEffect.csをCameraオブジェクトにアタッチするだけ。

後はAngleの値を変更するだけで効果具合が変わる。Angleが50でこれくらい。

f:id:masa795:20130929193218j:plain

 

 200にするとこうなる。値を大きくすると効果が強くなる。

f:id:masa795:20130929193445j:plain

 

 ImageEffectsは色んな効果用意されている。こちらのサイトに一覧になっていて見やすくなっている。

さらにUnity4.2で機能追加と改良がされている様なので、モバイルでも十分イケるそうです。

 

ちなみにImageEffectsはPro専用の機能。今回使用したVortexEffect.csを見てみると

void OnRenderImage (RenderTexture source, RenderTexture destination) {
    ImageEffects.RenderDistortion (material, source, destination, angle, center, radius);
}
    

となっていて「OnRenderImage」が使われている。これがPro専用の関数でカメラの描画処理が終わった後に呼ばれてそこで処理を行っている。

 

公式サイトのリファレンスマニュアル にも日本語で画像も付いて説明されているので、特殊効果を使いたい場合はAssetStoreを見る前にチェックすると簡単に実現できるかもしれない。