わかゲームスタジオ

ゲーム制作初心者専門学生の備忘録

Unity 爆弾を実装する

以前のゲームジャムで爆弾を実装するときに参考になるサイトが見つからなかったので残しておきます。

Unity ver 2019.3.4f1

↓今回できること↓




①エネミーを作成

f:id:WakaiGames:20200922164348p:plain

  • Enemyタグを追加、設定

②爆弾用オブジェクト作成

f:id:WakaiGames:20200922164802p:plainf:id:WakaiGames:20200922164017p:plain

  • 爆発範囲用コライダー追加
  • 爆弾自体の当たり判定は子構造にしておきます。

③爆弾側にスクリプトを追加

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

public class BombAction : MonoBehaviour
{
    //範囲内にいるEnemyを保存するためのリスト
    private List<GameObject> enemys;

    private void Start()
    {
        //リストを初期化
        enemys = new List<GameObject>();
    }

    private void OnTriggerEnter(Collider other)
    {
        //進入オブジェクトがEnemyタグを持っているかつ、リスト外
        if (other.transform.tag == "Enemy" && !enemys.Contains(other.gameObject))
        {
            enemys.Add(other.gameObject);
        }
    }

    private void OnTriggerExit(Collider other)
    {
        //出て行ったオブジェクトがEnemyタグを持っている
        if (other.transform.tag == "Enemy")
        {
            enemys.Remove(other.gameObject);
        }
    }

    //爆発処理
    private void Explosion()
    {
        print("Bomb");
        foreach (GameObject item in enemys)
        {
            //リスト内のオブジェクトを破壊
            Destroy(item);
        }
        //爆弾自身も破壊
        Destroy(gameObject);
    }
}

④爆発関数を実行

    IEnumerator Exp()
    {
        yield return new WaitForSeconds(2.5f);
        Explosion();
    }
  • 先のままでは爆発しないので関数呼び出し用コルーチンを書いておきます。
  • これをStartで呼び出します。

すると、

以上です。
foreach文内でEnemyにアタッチしたクラスをGetして、ダメージ処理を書いておくと即死ではなくダメージを与えることができます。
ゲームに応じて使い分けてみてください。