気ままエンジニアの読書感想文

ITエンジニアの私が読んだ本の感想や技術についてのメモ、作ったものについて書いていくブログです。

Trail RendererのOrder in Layerが機能しない問題【Unity】

Trail RendererのOrder in Layerが機能しない

Unityで2Dゲームを作成中に、表題の問題が起きたのでその解決策を書き置きます。

【環境】
MacOS:Catalina 10.15.7
Unity:2020.3.21f1
テンプレート:2D

 

状況

自作ゲームで、プレイヤーが動いた軌跡を描画するTrail Rendererを適用しました。

Spriteを通過する際に、軌跡をSpriteより手前側に描画したいので、Order in LayerをTrailRendererは2、Spriteは0を設定したのに、軌跡は奥側を通るままでした。

gazo_feature.png
状況はこの通り。
白い糸のプレイヤーの軌跡が、黒い針の手前を通ってほしい。

Sorting Layerを変えても同じでした。

 解決法

調べてみるとUnityのForumで話題がありました。

 

Problem with Trail Renderer's sorting layer
https://forum.unity.com

 

Trail Rendererに付けたMaterialのShaderがデフォルトのままだとsorting layerが効かないということでした。
そこでMaterialのShaderをSprite/Defaultにしてみます。

スクリーンショット 2021-11-01 21.31.47.png

これで無事にorder in layerが効くようになりました。

スクリーンショット 2021-11-01 21.27.23.png
※針の右半分にorder in layerが最大のスプライトを付けているため、右半分は糸が後ろになっています。

 おまけ

今回のバグを直して作ったゲームです。
Androidのみですが遊んでもらえたら嬉しいです。
https://play.google.com/store/apps/details?id=com.Hayatoya.Itotosi2020