ikoan unity 開発メモ

Unityに関するアレコレを日々つづっていこうと思います

ParticleSystemのEmit位置

環境

Unity2018.2.10.f1

パーティクルの発射位置がずれる

同一ParticleSystemをPositionだけ移動させ、中身を使いまわそうとした時に、プログラムでpositionを操作してEmit関数を呼び出しても、どうもうまくいかない。

プログラム上でposition移動させたあと、SceneViewのParticleEffectでPlayすると位置はちゃんと動いている。
なんでなのだろうと調べてみた。

ParticleSystem.Emit - Unity スクリプトリファレンス
スクリプトから指定したパーティクル数を放出します”とある。
字面を見る限り、特に問題なさそうなんだけど。
ただ、まぁ放出位置に関しては記載されていない。どうすればいいのかなぁ。

もう一つ、Emit( PartilceSystem.EmitParams emitParams, int count ); というメソッドが目に付く。
EmitParamsの中身を見てみると、
EmitParams - Unity スクリプトリファレンス
positionとやらの変数が。

これなんだろうなーと、EmitParams.positionに設定したいワールド座標を入れてみる。
なんかチラッと見えたけど、変な場所に移動したなーと思い、あーこれ相対座標になっちゃうのかなと思ったので、ParticleSystemの座標は(0,0,0)のままにしてみる。
再生すると、位置はいいんだけど、動きが変・・・。本来は全方位に散るように見えるはずなのに、収束している。
なんでだろうなー、ともう一度リファレンスを見てみると。。。

ParticleSystem.EmitParams.position - Unity スクリプトリファレンス
"To retain the effects of the shape module, set applyShapeToPosition to true."
あー、まさにこれじゃね?と思ったので、言われた通りにして実行。


動いた!!
最終的なソースは下記のようになりました。

ParticleSystem.Emitを使って、パーティクルを放出する際に、放出位置をプログラムから ...