走っているときに土煙を発生させる

走っているときに土煙エフェクトが発生するものをつくってみました。
エフェクトはスーパーマリオオデッセイを参考にしてみました。
ちょっと違和感がある気がしますけど、ソレっぽくはなっていると思います・・・!

(ちなみにスーパーマリオオデッセイをプレイしたことはありません…)

パーティクルシステム

パーティクルシステムの設定はこんな感じです。
エディタの言語を日本語にしてるので英語のままで使ってる方にはわかりづらいかもしれません…

「生存期間のサイズ( 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が取得できてしまうので注意が必要です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする