【Unity】ParticleSystemの描画座標がズレる原因と一発で解決する方法

GameObjectにParticleをセットして、いざスクリプトから動かしてみると「なぜか座標がズレて描画されてしまう…」と困ったことはありませんか?

今回は、そんなParticleSystemの描画座標が意図しない場所になってしまう現象の原因と、スクリプトからの簡単な解決方法をメモとして残しておきます。

目次

なぜParticleSystemの座標はズレるのか?

結論から言うと、座標がズレてしまうのは「描画する座標が、実際に描画されるタイミングよりも事前に計算されてしまっているため」です。

Unityの仕様上、オブジェクトを移動させた直後にパーティクルを発生(Emit)させようとしても、内部の計算タイミングのズレによって、移動前の古い座標を基準にパーティクルが描画されてしまうことがあります。

解決策:Emit直前に強制で再計算させる

そんな時は、パーティクルを Emit する直前に、強制的に時間をリセットして計算し直させることでズレが綺麗に解消します!

具体的な解決アプローチとして、Simulate(0f) というメソッドを使用します。

実際のコード例

実際に私が座標ズレを解消した際のコードスニペットです。

// パーティクルの時間を0秒目にリセットして強制再計算
particle.Simulate(0f);

// その直後にパーティクルを発生させる
particle.Emit(1);
楽天ブックス
¥2,959 (2026/03/12 01:59時点 | 楽天市場調べ)
トップカルチャーnetクラブ
¥2,959 (2026/03/12 01:59時点 | 楽天市場調べ)

Unityに関する記事一覧

記事が見つかりませんでした。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

はじめまして、秋月なるです。

アラフォー会社員で、スマホアプリ/ゲーム/AIが好き。
新しいものを見ると触りたくなるタイプで、スマホやウェアラブル等ガジェットが好きですが、よく買ったあとに「思ってたのと違う…」をやりがち。

ブログ投稿は趣味の1つなので、興味があるもの全般をゆるく続けていこうと思います。

目次