この記事ではUnityのParticle Systemを使ってぶつかったときに水しぶきが出る押し寄せる波の作り方を紹介します。
完成のイメージはこのようなものになります。
サンプル
STYLY GALLERYからサンプル空間を体験できます。
記事で紹介しているUnityプロジェクトのダウンロードはこちらからできます。 Wave_Sample
Particle Systemの追加
GameObjectのEffectsからparticle Systemを選択します。
Particle Systemが生成されました。
Shapeモジュールの設定
次にShapeモジュールにチェックを入れて形状と向きを変更します。
ShapeはBoxにRotation Yを60,Scale Yを8にしました。
Emissionモジュールの設定
Emissionモジュールにチェックを入れて値を設定していきます。
Rate ocer Timeを0にします。 Burstを追加してCount 200,Intervalは4にします。
Trailsモジュールの設定
trailsモジュールにチェックを入れてTrailを追加します。
Trail MaterialをDefault-Particleにします。
マテリアルを変えたので見た目がきれいになりました。 TrailsのLifetimeとWidth over Lifetimeの設定を追加します。
メインモジュールの設定
メインモジュールの値を変更していきます。
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モジュールのグラデーションを設定していきます。
ブルーで始まって消える前に白くなっていくようなグラデーションにします。
Noiseモジュールの追加
Noiseモジュールを追加して少しばらつきのある動きを加えます。
StrengthをRandom between two constantsでo.1と0.3に Frequencyを0.4にします。
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のままにしてください。
パーティクルと衝突させたいオブジェクトはすべてこのレイヤーに設定します。
水しぶきのパーティクル
ここからパーティクルが衝突したときに発生する水しぶきを作っていきます。 まずはParticle Systemを作成します。
Shapeモジュールの設定
Shapeの形状はSphereでRadiusは0.1にします。
メインモジュールの設定
メインモジュールの値を設定していきます。
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モジュールの設定
Rate over Lifetomeをoに BurstをTimeを0 Countを30 Cycleを1にします。
Collisionモジュールの設定
水しぶきにも衝突判定を発生させます。
TypeをWorldに Collides WithにHit Objectレイヤーを設定します。 ※現在STYLYではDefaultレイヤーオブジェクトしかアップロードできない仕様になっております。 STYLYにアップロードする場合はすべてDefaultレイヤーのままにしてください。 Collids WithもEvrythingのままにしてください。
Sub Emittersの設定
大きい波のエフェクトがオブジェクトに衝突したときに水しぶきのエフェクトが発生するようにします。 そのために大きい波のエフェクトにSub Emittersを追加します。
発生するタイミングはCollisionで その時に発生するエフェクトは水しぶきのエフェクトにします。
この画面が出て来たらYes,Reparentにします。 これで大きい波がHit Objectレイヤーのオブジェクトに衝突すると水しぶきのエフェクトが発生するようになりました。
この画面ではCylinderもHit Objectレイヤーにしてあります。
STYLY Editorでの見え方の違い
ここで制作したエフェクトをSTYLY Editorに配置するとすぐに衝突判定が発生してしまいます。 それはSTYLY Editor上でアセットロード時にBoxColliderを自動で生成して貼り付けているためです。 これはSTYLY Launcherを起動してVRゴーグルで見るときには解消されます。
この記事ではUnityのParticle Systemを使って波と水しぶきを表現する方法を紹介しました。 パーティクルにコリジョンを与えることによってよりリアルで説得力のある表現ができるようになります。 UnityからSTYLYにアセットをアップロードする方法 この記事を読む