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を使って、パーティクルを放出する際に、放出位置をプログラムから ...