Unityでゲーム、アプリ開発

Unityで初めてゲームやアプリを作る人のための支援ブログです。

Unity Objectが落下したら炎のパーティクルを表示させる方法 初心者編13

みなさん!今日もお元気ですか!?
布マスクが全世帯に2枚ずつ配布
されるとの事で、迷わず使っていきましょう!

自己管理を疎かにしてても
やはりチーンな事になるので
僕のオススメは、肺炎となって気づかずマラソンをして
免疫力の低下と病気悪化するより筋トレですね!

と言う事で本題に入っていきましょう。


Objectが落下したら炎のパーティクルを表示させる方法!

f:id:Phoenix9056:20200229224458j:plain

今回は、ロウソクが地面に当たったら炎が出るように
設定していきます。
まず、3Dでプロジェクトを開いていきましょう。



f:id:Phoenix9056:20200402050641j:plain

エディタ画面の上部にあるWindow⇨Asset Storeから
アセットストアを開いて、Modular Medieval Lanternsを検索して
インポートしてください。

アセットストアの使い方がわからない方は下記記事を参考にしてください。
www.unityprogram.info


f:id:Phoenix9056:20200402051026j:plain

次に、Unity Particle Packをインポートします。

f:id:Phoenix9056:20200402051115j:plain

次のような画面になったらInstall/Upgradeをクリックして
新しいUnityのバージョンでも対応できるようにしましょう。


f:id:Phoenix9056:20200402094147j:plain

Hierarchy内にある①のをクリックして、3D Object⇨②のPlaneを選択して作成します。
次に、ProjectAssets内にある③のLatems and Candlesの▶︎をクリック。
④のPrefabを選択して、⑤のCandle2をドラッグして、⑥のScene内の少し高い所にドロップしてください。

Candle2Inspector内にある、⑦のRotationXの数字を180にして逆さまにします。
同じく⑦にあるScaleX,Y,Zを全てにして分かりやすく大きくしましょう。


f:id:Phoenix9056:20200402095313j:plain

次にInspector内の一番下にある①のAdd Componentをクリックして
②のRigidbodyBox Colliderを追加してください。
また同じように①からNew Scriptと検索してスクリプト
作っていきます。
名前をFireにしてください。

次のコードをコピー&ペーストするか同じ記述にしてください。

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

public class Fire : MonoBehaviour
{
    //ParticleSystem型で変数psを宣言します。
    ParticleSystem ps;
    //Inspectorに設定できるようにpublicを宣言して
    //GameObject型で変数candleを宣言します。
    public GameObject candle;
    //GameObject型で変数objを宣言します。
    GameObject obj;
    
    
    void Start()
    {
        //FindメソッドでExplotionのGameObjectにアクセスして
        //変数objで参照します。
        obj = GameObject.Find("WildFire");
        //GetComponentでParticleSystemを取得して
        //変数psで参照します。
        ps = obj.GetComponent<ParticleSystem>();
        //変数objを非表示にしてParticleSystemの実行を止めます。
        obj.SetActive(false);
        
    }

    //GameObjectが接触した時の処理
    private void OnCollisionEnter(Collision collision)
    {
        //もしPlaneに接触したら。
        if (collision.gameObject.name == "Plane")
        {
            //非表示にしていたobjを表示します。
            obj.SetActive(true);
            //変数ps、ParticleSystemを実行します。
            ps.Play();
            //2秒後にInspectorに設定してあるGameObjectを非表示にします。
            Invoke("CandleDisappeard", 2f);
        }
    }
    //GameObjectを非表示にする処理
    void CandleDisappeard()
    {
        //Inspector内のcandleに設定された
        //GameObjectを非表示にします。
        candle.SetActive(false);
    }



} 

次にHierarchy内にある④のCandle2をドラッグして、
先程追加した③のスクリプト内にある⑤のCandleにドロップしてください。
※画像にLifeと写っていますがスクリプトの試行錯誤中の
間違いなので気にしないでください。
この記事のスクリプトは修正してあります。


次に、Project内にある⑥のEffectExanplesの▶︎をクリックして
⇨のFire & Explosion Effectsの▶︎を選択して、
⑦のPrefabをクリック。

一番下にある⑧のWildFireをドラッグして、
Scene内のCandle2が落ちると思われる部分に
ドラッグ&ドロップしてください。

これで完成です!

再生してみましょう。

f:id:Phoenix9056:20200402111708g:plain

こんな感じで嫌な人を思い浮かべながら
燃やしてください笑笑

ご視聴ありがとうございました!

※初心者編は下記カテゴリを参照してください。基本を記載しています。
www.unityprogram.info

※Unity学習していきたい方は下記カテゴリを!少しめんどくさくなってきます。
www.unityprogram.info

※3Dゲームを作っていきたい方は下記カテゴリを参考にしてください。
www.unityprogram.info

オススメアセットはコチラ。
www.unityprogram.info