多脚戦車から弾と共に発砲煙を出してみる
おおっと!EXPLOSION
一週遅れとなってしまったが、今回こそ発砲煙を吹いてみたい。
というわけで、↑これの、"DustExplosion"を使用する。
とはいえ、やることはたかが知れている。
↑の通り、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 () { } }
ヒヤッホォォォウ!最高だぜぇぇぇぇ!!
最後っ屁みたいなモノが出てるのはご愛嬌。
再生開始タイミングによっては、最初のフレームをお洩らししてるな。
ParticleSystemのLoopingチェック外してもコレなのでGameObject破棄時間をちょっと調整する必要がありそう。
まぁとりあえず、らしい感じにはなったな。わりと他力本願だけど。
次回予告
的に当てて爆発粉砕したいところだが、今回の応用ですぐできそうな気もするので、次回はカメラを定点から三人称視点に移してみようと思う。
もう定点は飽きたのさ。