norablog-techのブログ

このブログは、自分の忘備録的にアウトプットするためのブログとなっております。

【Unity】敵機に消滅のエフェクトをつける。

前書き:
このブログは、自分が学んだこと、調べたことをアウトプットするために忘備録的に残しているブログとなっております。
間違った情報や私の勘違いなどをお伝えしてしまうこともあるかと思います。
そこのところをご理解いただき、ご覧ください。
また、間違いや勘違いについて、ご指摘ご鞭撻いただければ幸いです。

 

今回は、敵機の消滅のエフェクトをつけます。


www.youtube.com

 

1.前回作成の爆発用画像をプロジェクトの「Sprites」にドラッグアンドドロップします。

f:id:NoraBlog:20220126085633p:plain

Sprites

2.アニメーション化したいスプライトをまとめて、「ヒエラルキー」に登録。
 この時、元画像の"Circle"はアニメーションに含めないほうが良いです。
 名称がごちゃごちゃになってしまい、分かりにくくなります。

 名称は"CircleExplosion.anim"、"CircleExplosion.controller"としました。
 両方とも「Animations」ホルダーに移動して置きます。

f:id:NoraBlog:20220126085815p:plain

Animations

3."CircleExplosion.anim"はループさせる必要はないので、「インスペクター」内の"時間をループ"のチェックは外します。

f:id:NoraBlog:20220126085924p:plain

インスペクター

4.「ヒエラルキー」上の名前を"CircleExplosion"に変更します。
 「PreFabs」フォルダーにドラッグアンドドロップしてPreFab化します。
 「ヒエラルキー」上の"CircleExplosion"は削除します。

f:id:NoraBlog:20220126090036p:plain

PreFabs

5.「PreFabs」フォルダー内の"CircleExplosion.prefab"をクリック、「インスペクター」内の"タグ"に"CircleExplosion"を作成して登録します。
 必ずしも必要はないようですが、Tagを必ず付けるようにしました。
 さらに"コンポーネントを追加"から、"New Script"->"CircleExplosion.cs"を作成します。

f:id:NoraBlog:20220126090251p:plain

インスペクター

6. Scriptに以下のように追加します。

CircleExplosion.cs

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

public class CircleExplosion : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Destroy(gameObject, 0.5f);  //gameObject:自分(CircleExplosion)自身 0.5secディレイ(待って)で自身を破壊
    }

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

 

CirclePreFabController.cs

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

public class CirclePreFabController : MonoBehaviour
{
    //GameObjectの宣言
    public GameObject circleexplosion; //追加

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        transform.position += new Vector3(
                0f,
                -0.5f * Time.deltaTime,
                0f
            );
    }

    //追記
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.gameObject.CompareTag("Bullet"))  //Tagが"Bullet"だったら
        {
            Instantiate(circleexplosion, transform.position, transform.rotation);  //追記 爆発エフェクト
            Destroy(collision.gameObject);  //ぶつかったもの(Bullet)
            Destroy(gameObject);            //gameObject:自分(Circle)自身
        }
    }

}

 

7."CirclePreFab"の「インスペクター」内の"CirclePreFabController(スクリプト)"の"CircleExplosion"の項目に「PreFabs」フォルダー内の"CircleExplosion.prefab"をドラッグアンドドロップします。

f:id:NoraBlog:20220126090622p:plain

インスペクター

8.ここまでの作業をセーブして、ゲームを起動して確認します。
 ・Unityのコンソールにエラーが出てないこと。(7.を忘れがちです)
 ・Circleに弾が当たると爆発のエフェクトが表示され、消滅すること。

 

今回はここまで。