Unity4.3 2D描画の上にParticleが表示されない

最近UAの甘い運命という曲のサビがかわええなあ。
と思ってループです。かめです。

 

Unity4.3にしまして、背景のスクロールを今まで板ポリだったのをせっかくなので2D Spriteで表示してみることにしました。

Unity4.3にしたので2D機能をほんの少し試してみよう 

 

そこで問題発生。

 

下のようになりました。
具体的には手前にParticle System(Shuriken)を配置しても、
2D描画の裏にいってしまう?
ただ、手前にある3Dには投影される。。
いや、裏ではなく反映されていないのか?加算などのシェーダだと表示されないけれど、デフォルトシェーダだと表示される。。

f:id:kame0_0:20131207013754p:plain

 とにかく、Particleが使えないのは困るので、調べてみた。

試してみようでも書いたように2D描画の重ね順は、Order in LayerとSorting Layerで管理します。Sorting Layerで重ね順のレイヤつくって、その中でOrder in Layerに数字で重ね順を管理します。

その設定をParticleにもすればいいのか。

上のリンクを見ると、

public class ParticleSortingLayer : MonoBehaviour {

void Start ()
{
// Set the sorting layer of the particle system.
particleSystem.renderer.sortingLayerName = "foreground";
particleSystem.renderer.sortingOrder = 2;
}
}

まずSorting Layerを作ります。
追記:4.3以前で作ってたのを4.3にバージョンアップしたのでDefaultしかなかったですが、4.3以降でプロジェクトを新規で作ればforegroundが最初から用意されているので作る必要がないようです。

メニューのEdit>ProjectSettings>Tags&Layers

f:id:kame0_0:20131207020935p:plain

コードは「foreground」になってたので、まあそれを作ります。
そして2D画像は「Background」に入れました。

particleSystem.renderer.sortingOrder = 2;

それだとこの行要らないですね。
上のコードはparticleSystemのGameObjectにつけます。

するととりあえず、手前に出るようになったはず。

 

腑に落ちないのは、わざわざコードで設定しなきゃいけないのか。
particleSystemはSorting Layerの設定をもっていないのか?
うーん。

f:id:kame0_0:20131207021724p:plain

とりあえず手っ取り早く表示させるなら、レイヤの重ね順がこのリストをドラッグすると変わるので、背景をDefaultより上にもってくると表示されます。
particleSystemのSorting Layerの初期値はDefaultなので。

 

一応解決。

12/3のUnityアドベントカレンダーも書いたよー。
Unity3D - Unity 途別2Dアセット - Qiita [キータ]