LoginSignup
2
3

More than 3 years have passed since last update.

Unity パーティクルシステムでスピード感を表現するエフェクトを実装する

Posted at

マリオカートでキノコを使った時に出てくるようなエフェクトを作ります。

完成形はこちら
Image from Gyazo

手順

パーティクルを作成

GameObject >> Effects >> ParticleSystemを選択

Image from Gyazo
↑初期状態はこんな感じ。このパーティクルを編集していきます。

パーティクルの編集

まずは、パーティクルをカメラに向けます。
PositionZとRotationXを変更して調整しましょう。

パーティクルがカメラを向きました。
Image from Gyazo
次にParticleSystemのパラメータを以下のように変更します。

ParticleSystem >> Start Size ==> 0.2
Emission >> Rate over Time ==> 80
Shape >> Radius ==> 5

パラメーター 内容
Start Size 開始時のパーティクルの大きさ
Rate over Time ユニットタイム毎に放出されるパーティクルの数
Shape パーティクル射出円の半径


パーティクルの大きさは小さくなり、数が増え広範囲に広がるようになりました。
Image from Gyazo
次にパラメータを以下のように変更します

ParticleSystem >> StartSpeed ==> 50
Shape >> Angle ==> 5
Renderer >> RenderMode ==> Streched Billboard
Renderer >> LengthScale ==> 15

パラメーター 内容
StartSpeed 各パーティクルの初速
Angle 射出されたパーティクルの広がり幅
RenderMode(Streched Billboard) パーティクルの大きさをカメラに向けたまま変更可能にする
Length Scale パーティクルを速度の方向に引き伸ばす


こんな感じで完成です。
Image from Gyazo
過ぎ去ったパーティクルを残していても意味がないので、ParticleSystem >> Start Lifetimeは1に設定しても良いと思います。
Start Colorを変更する事で色を付けたりもできます。
複製してそれぞれ色をつけるとこんなエフェクトも作れます。
Image from Gyazo

おまけ

ユニティちゃんのダッシュに合わせてパーティクルを発動
Image from Gyazo
スピード感がありますね!!

なお、スクリプトで操作する場合は以下の通りです。
ゲーム開始時にパーティクルシステムをオフにしたい場合はインスペクター上で
ParticleSystem >> PlayOnAwake のチェックを外してください。

Player.cs
[SerializeField] ParticleSystem particleSystem; // パーティクルシステムを取得

particleSystem.Play(); //パーティクルシステムをスタート
particleSystem.Stop(); //ストップ
2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3