デフォルトではパーティクルはスプライトの上に表示されるが、スプライトの下にパーティクルを表示したい。
Renderをカスタマイズして、スプライトの下に表示されるパーティクルを追加しようとしたが失敗。
パーティクルの上に表示されるスプライト(マテリアル)を作成したら上手く行ったのでメモ。
手順
レンダーのカスタマイズ
builtins/renderフォルダのdefault.renderとdefault.render_scriptをコピー
renderフォルダを作成し、その中にペースト。ファイル名をcustomに変更
custom.render_scriptのinit関数を修正(ハイライト行を追加)
|
function init(self) self.tile_pred = render.predicate({"tile"}) self.gui_pred = render.predicate({"gui"}) self.text_pred = render.predicate({"text"}) self.particle_pred = render.predicate({"particle"}) self.above_particle_pred = render.predicate({"above_particle"}) (省略) end |
custom.render_scriptのupdate関数を修正(ハイライト行を追加)
|
function update(self) (省略) render.draw(self.tile_pred) render.draw(self.particle_pred) render.draw(self.above_particle_pred) render.draw_debug3d() (省略) end |
custom.renderのScriptをcustom.render_scriptへ変更
プロジェクトのレンダーにカスタマイズしたrenderを設定
マテリアルの作成
builtins/materialsフォルダのsprite.materialをコピー
materialsフォルダを作成し、その中にペースト。ファイル名をsprite_above_particleに変更
materialのタグを変更
マテリアルを設定
パーティクルより手前に表示したいスプライトへマテリアルを設定する
参考
How do I make particles draw behind other objects based on Z position?
https://forum.defold.com/t/how-do-i-make-particles-draw-behind-other-objects-based-on-z-position/121