原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

走るキャラクターに土煙を付けたい

最強寒波とやらで極寒の中、健気にエナジードリンクのサンプルを配布しているお姉さんがいたので、「くそ寒いから要らないけど貰ってあげよう、可哀そうだし、家に持って帰って飲もう」と思って、鼻の下が伸びないように注意しながらお姉さんに近寄っていったのですが、そのお姉さんが「ありがとうございます。」とか言いながら、プシュッと蓋を開けて渡したわけです。

ここで飲めと?

とりあえず、雪が舞う中 でエナジードリンク飲んでも体は暖かくならないことは分かりました。

 

さて、移動するキャラクターが土煙を巻き上げて走っているように見せたい場合、キャラクターの足元に煙のパーティクルを出す方法があるみたいです。

 

tsubakit1.hateblo.jp

車やバイクとか高速で移動する物体だとこの表現で十分なのですが、一般的な人型のキャラクターにこれを付けるとちょっとオーバーかな?と思えたり。みんなアラレちゃんになるし。

 

できれば一定間隔で土煙が巻き上がる感じの表現にしたい。

f:id:Karvan:20180112222527g:plain 

こんな感じで。

 

なので、その方法を模索してみまた。

 

まず、土煙のパーティクル本体に以下のスクリプトを設定して、パーティクル再生後に一定期間で消滅するようにします。

 

public class Dust_AutoDestructShuriken : MonoBehaviour {
    // 生存時間
    float lifeTime;

    public void OnCheckOn()
    {
        // パーティクルの開始
        ParticleSystem myParticleSys = this.GetComponent<ParticleSystem>();
        myParticleSys.Play();

        // アクティブ監視処理実行
        StartCoroutine("CheckIfAlive");
    }

    IEnumerator CheckIfAlive()
    {
        while (true)
        {
            yield return new WaitForSeconds(lifeTime);
            if (!GetComponent<ParticleSystem>().IsAlive(true))
            {
                GameObject.Destroy(this.gameObject);
            }
        }
    }
}

 

次に、上記スクリプトを設定したパーティクルオブジェクトが一定間隔で生成されるように、走るキャラクターオブジェクト側に以下のスクリプトを設定。

Update関数で一定時間間隔でパーティクルオブジェクトが生成されます。 

 

    // タイムアウト時間
    float timeOut;

  // 土煙のパーティクルオブジェクト
  BackDustPrefab void Update () { timeElapsed -= Time.deltaTime; // タイムアウト発生時 if (timeElapsed <= 0) { // 走行時の砂埃エフェクト生成 RunEffectCreate(); timeElapsed = timeOut; } } /// <summary> /// 走行時の砂埃エフェクト生成 /// </summary> public void RunEffectCreate() { // エフェクトオブジェクトの生成 GameObject crObj = Instantiate(BackDustPrefab, Vector3.zero, Quaternion.identity, this.transform.parent); crObj.transform.localPosition = this.transform.localPosition; // エフェクトの実行 Dust_AutoDestructShuriken crPar = crObj.GetComponent<Dust_AutoDestructShuriken>(); crPar.OnCheckOn(); }

 

ここで気を付けるのは生成するパーティクルオブジェクトがキャラクターオブジェクトの子オブジェクトにはならないようにすること。

子オブジェクトにするとキャラクターにくっ付いて一緒に移動してしまいます。

 

 これを実際のゲーム画面(開発中)で動かしてみるとこんな感じ。

 

f:id:Karvan:20180112222623g:plain 

 

ハイ、そこ!オナラしてる、とか言わない!

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。