スポンサーリンク
スポンサーリンク
UnityUnityメモ

Unity時間経過でInstantiateを止める仕組み

Unity

Unityはゲーム開発において非常に人気のあるツールです。初心者からプロまで幅広く利用されており、その柔軟性と強力な機能が魅力です。今日はその中から、「プレハブを連続で生成し、5秒経過後に生成を停止する方法」について詳しく解説していきます。

プレハブ(Prefab)とは?

まず、プレハブとは何かについて簡単に説明しましょう。プレハブはUnityにおいて、あらかじめ設計されたゲームオブジェクトです。これを利用することで、同じ種類のオブジェクトを繰り返しゲーム内に配置することが容易になります。例えば、同じ種類の敵キャラクターを複数生成したい場合などに便利です。

この記事では3DオブジェクトのSphereをprefabにして使用します。

SphereにはRigidbodyと移動するスクリプトをアタッチしてあります。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class SphereMove : MonoBehaviour
{
    private Rigidbody rb;
 
    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }
 
    void Update()
    {
        rb.AddForce(new Vector3(0,0,5));
    }
}

連続生成の基本

プレハブを連続して生成するには、スクリプトを書く必要があります。UnityではC#言語を使用しますが、ご安心ください。ここでは初心者にも理解しやすいように、基本的なコードから説明します。

using UnityEngine;

public class Spawner : MonoBehaviour
{
    public GameObject prefabToSpawn;
    public float spawnInterval = 1f;

    private float timer = 0f;

    void Update()
    {
        timer += Time.deltaTime;
        if (timer > spawnInterval)
        {
            Instantiate(prefabToSpawn, transform.position, Quaternion.identity);
            timer = 0f;
        }
    }
}

このスクリプトでは、Updateメソッドを使って毎フレームタイマーを更新し、一定間隔ごとにプレハブを生成します。

5秒後に生成停止

次に、この連続生成を5秒後に停止させる方法です。これもスクリプトに少し追記するだけで実現できます。

using UnityEngine;

public class Spawner : MonoBehaviour
{
    public GameObject prefabToSpawn;
    public float spawnInterval = 1f;
    public float duration = 5f;

    private float timer = 0f;
    private float durationTimer = 0f;

    void Update()
    {
        durationTimer += Time.deltaTime;

        if (durationTimer < duration)
        {
            timer += Time.deltaTime;
            if (timer > spawnInterval)
            {
                Instantiate(prefabToSpawn, transform.position, Quaternion.identity);
                timer = 0f;
            }
        }
    }
}

ここでは、新たにdurationTimerというタイマーを追加し、このタイマーが設定した期間(この場合は5秒)を超えたら、プレハブの生成を停止するようにしています。

まとめ

Unityでプレハブを連続生成し、一定時間後に停止させる方法は、非常にシンプルです。この基本的なテクニックをマスターすることで、Unityでのゲーム開発がさらに楽しく、効率的になるでしょう。

Unityの世界は奥深く、これからも新しい発見や学びがたくさんあります。今回学んだ知識を活かして、より創造的なゲーム開発に挑戦してみてください。

スポンサーリンク
C-BA memo
タイトルとURLをコピーしました