Unityのパーティクルシステムで波のエフェクトを作る

この記事ではUnityのParticle Systemを使ってぶつかったときに水しぶきが出る押し寄せる波の作り方を紹介します。

完成アニメーション

完成アニメーション

完成のイメージはこのようなものになります。

サンプル

STYLY GALLERYからサンプル空間を体験できます。

 

記事で紹介しているUnityプロジェクトのダウンロードはこちらからできます。 Wave_Sample

Particle Systemの追加

GameObjectのEffectsからparticle Systemを選択します。

Particle Systemの追加

Particle Systemの追加

Particle Systemが生成されました。  

Shapeモジュールの設定

次にShapeモジュールにチェックを入れて形状と向きを変更します。

Shapeの変更

Shapeの変更

ShapeはBoxにRotation Yを60,Scale Yを8にしました。  

Emissionモジュールの設定

Emissionモジュールにチェックを入れて値を設定していきます。

Emissionの設定

Emissionの設定

Rate ocer Timeを0にします。 Burstを追加してCount 200,Intervalは4にします。  

Trailsモジュールの設定

trailsモジュールにチェックを入れてTrailを追加します。

Trailsの追加

Trailsの追加

  Trail MaterialをDefault-Particleにします。

Trail materialの追加

Trail materialの追加

マテリアルを変えたので見た目がきれいになりました。 TrailsのLifetimeとWidth over Lifetimeの設定を追加します。

Trailsの詳細設定

Trailsの詳細設定

 

メインモジュールの設定

メインモジュールの値を変更していきます。

メインモジュールの設定

メインモジュールの設定

Durationを6 Start LifetimeをRandom between two constantsで4と5に Start SpeedをRandom between two constantsで12と13に Gravity Modifierを0.7にします。 これで形状と動きができました。

Color over Lifetimeモジュール色をつける

波の色が真っ白のままなので色を付けていきます。 Color over Lifetimeモジュールのグラデーションを設定していきます。

Colorのグラデーション

Colorのグラデーション

ブルーで始まって消える前に白くなっていくようなグラデーションにします。  

Noiseモジュールの追加

Noiseモジュールを追加して少しばらつきのある動きを加えます。

Noiseの設定

Noiseの設定

StrengthをRandom between two constantsでo.1と0.3に Frequencyを0.4にします。  

Collisionモジュールの追加

Collisionモジュールを追加してパーティクルが衝突するようにします。

Collisionの追加

Collisionの追加

TypeをWorldに Bounceを0.5 Lifetime Lossを0.5にします。   Collides Withの項目で衝突するオブジェクトのレイヤーを指定できます。 そのための新規レイヤーを作成します。

レイヤーの作成

レイヤーの作成

Add layerでレイヤーを追加してレイヤー名をHit Objectにします。

レイヤーの追加

レイヤーの追加

  Collides Withから新しく作ったレイヤーHit Objectを指定します。

レイヤーを指定

レイヤーを指定

これでHit Objectのレイヤーとだけ衝突するようになりました。   PlaneのレイヤーをDefaultからHit Objectに変えることでパーティクルと衝突できるようになります。 ※現在STYLYではDefaultレイヤーオブジェクトしかアップロードできない仕様になっております。 STYLYにアップロードする場合はすべてDefaultレイヤーのままにしてください。 Collids WithもEvrythingのままにしてください。  

Planeにもレイヤーを指定

Planeにもレイヤーを指定

パーティクルと衝突させたいオブジェクトはすべてこのレイヤーに設定します。

水しぶきのパーティクル

ここからパーティクルが衝突したときに発生する水しぶきを作っていきます。 まずはParticle Systemを作成します。

Particle Sysytemの追加

Particle Sysytemの追加

 

Shapeモジュールの設定

Shapeの形状はSphereでRadiusは0.1にします。

Shapeの変更

Shapeの変更

 

メインモジュールの設定

メインモジュールの値を設定していきます。

メインモジュールの設定

メインモジュールの設定

Start DelayをRandom between two constantsにして0と0.3に Start LifetimeをRandom between two constantsにして1と1.3に Start SpeedをRandom between two constantsにして6と8に Gravity Modifierを0.5にします。

Emissionモジュールの設定

Emissionモジュールの設定

Emissionモジュールの設定

Rate over Lifetomeをoに BurstをTimeを0 Countを30 Cycleを1にします。

Collisionモジュールの設定

水しぶきにも衝突判定を発生させます。

Collisionの設定

Collisionの設定

TypeをWorldに Collides WithにHit Objectレイヤーを設定します。 ※現在STYLYではDefaultレイヤーオブジェクトしかアップロードできない仕様になっております。 STYLYにアップロードする場合はすべてDefaultレイヤーのままにしてください。 Collids WithもEvrythingのままにしてください。

Sub Emittersの設定

大きい波のエフェクトがオブジェクトに衝突したときに水しぶきのエフェクトが発生するようにします。 そのために大きい波のエフェクトにSub Emittersを追加します。

Sub Emittersの設定

Sub Emittersの設定

発生するタイミングはCollisionで その時に発生するエフェクトは水しぶきのエフェクトにします。  

Reparentにする

Reparentにする

この画面が出て来たらYes,Reparentにします。   これで大きい波がHit Objectレイヤーのオブジェクトに衝突すると水しぶきのエフェクトが発生するようになりました。

衝突したら発生するようになった

衝突したら発生するようになった

  この画面ではCylinderもHit Objectレイヤーにしてあります。

完成アニメーション

完成アニメーション

 

STYLY Editorでの見え方の違い

ここで制作したエフェクトをSTYLY Editorに配置するとすぐに衝突判定が発生してしまいます。 それはSTYLY Editor上でアセットロード時にBoxColliderを自動で生成して貼り付けているためです。 これはSTYLY Launcherを起動してVRゴーグルで見るときには解消されます。

STYLY Editorでの見え方

STYLY Editorでの見え方

    この記事ではUnityのParticle Systemを使って波と水しぶきを表現する方法を紹介しました。 パーティクルにコリジョンを与えることによってよりリアルで説得力のある表現ができるようになります。   UnityからSTYLYにアセットをアップロードする方法 この記事を読む