多脚戦車から弾と共に発砲煙を出してみる

おおっと!EXPLOSION

一週遅れとなってしまったが、今回こそ発砲煙を吹いてみたい。

assetstore.unity.com

というわけで、↑これの、"DustExplosion"を使用する。

とはいえ、やることはたかが知れている。

docs.unity3d.com

↑の通り、ParticleSystemをぶら下げたGameObjectをInstantiatメソッドで生成するだけである。

ただし、そのままだと延々とシーン上に残り続けるので、これも↑の通り、GameObjectには生成時に破棄する(つまり、どういうことだってばよ)Script Componentを追加する。

例のごとく、オリジナルは維持しておきたいので、"DustExplosion"から複製した"GunFireSmoke"を発砲煙GameObjectとして新たにPrefab化することにした。

今回のソース

生成時に破棄するとは、こういう事だぁー!!

GunFireSmoke.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GunFireSmoke : MonoBehaviour
{
    // Use this for initialization
    void Start()
    {
        ParticleSystem partcleSystem = GetComponent<ParticleSystem>();
        Destroy(gameObject, (float)partcleSystem.main.duration);
    }

    // Update is called once per frame
    void Update()
    {

    }
}

Destorメソッドは、実行遅延時間が設定できるので、こういう芸当ができる。
コーディングも少なく済み、管理も楽ではある。

ついでに、出したら出しっ放しだった弾も、同じ対応を加えた。

Bullet.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Bullet : MonoBehaviour {

	// Use this for initialization
	void Start () {
        Destroy(gameObject, 5.0f);
    }

    // Update is called once per frame
    void Update () {
		
	}
}

GameObjectを生成するところは、弾のときと同じなので説明は割愛する。
強いて注意点を挙げれば、InspectorでPrefabの割り当てを忘れんようにすることだろうか。

二週間ぶりにいじったら、二週間前に自分がどういう設計していたか忘れており、エラーメッセージに出ているにもかかわらず、Prefabの割り当て忘れに気付くのに数時間かかった。アホス。

...さて、気を取り直して撃ってみよう。

ヒヤッホォォォウ!最高だぜぇぇぇぇ!!

vimeo.com

最後っ屁みたいなモノが出てるのはご愛嬌。
再生開始タイミングによっては、最初のフレームをお洩らししてるな。

ParticleSystemのLoopingチェック外してもコレなのでGameObject破棄時間をちょっと調整する必要がありそう。

まぁとりあえず、らしい感じにはなったな。わりと他力本願だけど。

次回予告

的に当てて爆発粉砕したいところだが、今回の応用ですぐできそうな気もするので、次回はカメラを定点から三人称視点に移してみようと思う。

もう定点は飽きたのさ。