【Unity】ParticleSystemを画面外でも処理させる

移動中の足元に砂埃を発生させるParticleSystemを追加したときに、少し躓いた部分をまとめます。

まずは以下の動画をご確認ください。

まず前提として、砂埃は空中では発生させないようにしています。
Particle System のEmissionを停止させる。もしくはPlay()Stop()関数で制御できます。
【Unity】パーティクルのクリアは行わずパーティクルの”生成”を停止させる方法
【Unity】パーティクルを止める – エフェクトhttp://albatrus.com/main/unity/8305

なのでジャンプ中は砂埃が発生しないわけですが。
何故か、着地した後も右脚だけは砂埃がでてきません。
これは、Particle Systemの「表示 画面外では処理を停止する」機能が働いてしまっているせいです。
ジャンプすることで、一旦画面内から砂埃が消えます。これにより
Particle System そのものが処理を停止してしまい、パーティクルの生成処理を要求しても、処理が実行されないことが原因だと思われます。
※証拠として振り向くと、ジャンプする前の砂埃のが残っています。そして、表示画面内にパーティクルが入ったことにより、右脚の砂埃生成が復活します。

解決方法は単純で、Particle Systemコンポーネントにある設定項目の
「Culling Mode」を”Always Simulate”に設定します。

するとパーティクルが画面外にでてしまってもParticle Systemは停止しないので、再度パーティクルを生成し始めるときに問題が発生しなくなる。

解決!
なんだかぐぐってもすぐに出てこない、こういった小さな問題の解決策を初めてとりあげれた希ガス。

コメント

タイトルとURLをコピーしました