[Unity]2Dゲーム用パーティクル

2D ゲームのエフェクトに Unity のパーティクルシステムを使おうと思い、試してみました。

以下のようなパーティクルを作っていきます。


パーティクルシステムは Shuriken (Unity 3.5) です。

カメラの作成

まずはパーティクル撮影用カメラを作ります。2D 撮影用カメラとは別にします。上の画像では、青い背景は 2D 部分です。


Hierarchy の Create > Camera で新しいカメラを作成し、Culling Mask を 3D パーティクル用レイヤだけを写すように設定します。ここでは "3D Particle" というレイヤを新しく作成して使用しています(Layer > Add Layer...)。

カメラからパーティクルの距離によってパーティクルのサイズが変わらないように、Projection を Orthographic にします。

パーティクルは 2D 部分(GUI やキャラクターなど)より手前に表示したいので、カメラの Depth は 2D 撮影用カメラよりも大きな値にします。

2012/7/31 追記 : Clear Flags を Depth only にします。

パーティクルの作成

まず、星の画像素材を作成します。星の部分の色はパーティクルシステム側でつけるので、画像では白にしておきます。星のまわりは透明にします。

画像ができたらプロジェクトビューにドラッグします。マテリアルを作成し(Project の Create > Material)、インポートした画像を設定、シェーダは Unlit/Trasparent Colored あたりにしておきます。

いよいよパーティクルです。Hierarchy の Create > Particle System で新しいパーティクルシステムを作成し、パーティクル撮影用カメラの子にします。レイヤはパーティクル用のものに忘れずに変えておきます。表示されない場合はカメラの撮影範囲に入っているか確認しましょう。

Renderer に先ほど用意したマテリアルを設定します。

Start Color を黄色に、Start Delay, Start Lifetime, Start Speed, Start Size, Duration を適当に調整します(値は画像参照)。

Color over Lifetime を調整して、赤から黄色に、かつフェードアウトするようにします。バーの下側が乗算する色、上側がアルファ値です。

Size over Lifetime を調整して、パーティクルが徐々に大きくなるようにします。


Shapeを Cone, Angle=90, Radius=0 にして、Rotation を 0,-180,-180 にすると中心から放射状に広がります(上図)。


Shapeを Cone, Angle=0, Radius=0 にして、Rotation を -90,-180,-180 にすると直線的になります(上図)。


Shape を Cone, Angle=0, Radius=90 に、Velocity over Lifetime で Y=-0.5 に、Force over Lifetime で Y=2 に、Rotation を 0,-180,-180 にすると放射状に広がりつつ放物線を描きます(上図)。

これで大体 2D エフェクトに使えそうになってきました。

ただ、複数解像度対応のためにパーティクルを拡大縮小する場合、パーティクルシステムはカメラ側でのスケール変更の影響を受けないため、拡大縮小にはちょっとした処理が必要です。ということで、次回はパーティクルのスケーリングについて書く予定です。


2012/7/18 追記 : 説明がどの画像を指しているかわかりにくかったのを修正。
2012/7/31 追記 : カメラの Clear Flags を Depth only にするのを書き忘れていたので追記。

コメント