走っているときに土煙エフェクトが発生するものをつくってみました。
エフェクトはスーパーマリオオデッセイを参考にしてみました。
ちょっと違和感がある気がしますけど、ソレっぽくはなっていると思います・・・!
(ちなみにスーパーマリオオデッセイをプレイしたことはありません…)
パーティクルシステム
パーティクルシステムの設定はこんな感じです。
エディタの言語を日本語にしてるので英語のままで使ってる方にはわかりづらいかもしれません…


「生存期間のサイズ( Size over Lifetime )」のカーブを変えると躍動感のある煙にできるので色々試してみるといいと思います。
メッシュについては無料のアセットを使わせてもらいました。
走っている時だけエフェクト発生させる
続いてスクリプトです。
走っているときにだけパーティクルを再生させます。
[SerializeField] private ParticleSystem footSmoke; private Rigidbody rb; void Start() { rb = GetComponent<Rigidbody>(); } void Update() { // 速度が0.1以上なら if(rb.velocity.magnitude > 0.1f) { // 再生 if (!footSmoke.isEmitting) { footSmoke.Play(); } } else { // 停止 if (footSmoke.isEmitting) { footSmoke.Stop(); } } }
パーティクルが既に再生中の場合には再生しないようにしていますが、
その際に、isEmittingというメンバーで再生中か確認しています。
isPlayingというものもあるのですが、こちらだと再生が止まっていたとしても粒子が残っているとTrueが取得できてしまうので注意が必要です。
コメント
どのようなメッシュを使っていますか?
教えて頂けると幸いです。
記事中にある「3LE Low Poly Cloud Pack」というアセットです!
そのアセットの中のどれを使っているかは、申し訳ないですがかなり昔のことなので覚えていないです・・・。
すみません!