【Unity】一定間隔でオブジェクトを作成する

高さ50、(x,z)=(-20~20,-20~20)の平面上のランダムな場所に
オブジェクトを一定間隔で作成させる。



オブジェクトを「Project」ビューにドラック&ドロップしてプレハブ化する

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

public class Ballpfb : MonoBehaviour
{
    //複製させるオブジェクト
    public GameObject prefab;
    //オブジェクトが複製される間隔(時間)
    public float appearNextTime;
    //複製させる数
    public int maxNumOfEnemys;
    //複製させた数(総数)
    public int numberOfEnemys;
    //待ち時間計測フィールド
    private float elapsedTime;

    //戻り値なし、引数なしでStartという名前のメソッドを作成
    void Start()
    {
        //複製させた数を初期化
        numberOfEnemys = 0;
        //待ち時間を初期化
        elapsedTime = 0f;

        
    }

    // 引数なし、戻り値なしでUpdateというメソッドを作成
    void Update()
    {

        //もし複製させた数が複製させたい数より上回ったら何もしない
        if (numberOfEnemys >= maxNumOfEnemys)
        {
            //return文:メソッドを終了し、戻り値を返す役割を持つ。これは戻り値なし。
            return;
        }

        //経過時間を足す
        elapsedTime += Time.deltaTime;


        //もし経過時間がオブジェクトを複製する時間を上回ったら以下を実行
        if (elapsedTime > appearNextTime)
        {
            //BallCreateメソッドを呼び出す
            BallCreate();
        }

        
    }


    //引数なし、戻り値なしでBallCreateという名前のメソッドを作成
    void BallCreate()
    {
        //float型のxに0~20のランダムな数字を入れる
        float x = Random.Range(-20f, 20f);
        //float型のyに500を入れる
        float y = 50;
        //float型のzに0~20のランダムな数字を入れる
        float z = Random.Range(-20f, 20f);

        //Vector3型の「position」を(x,y,z)の値を入れて作成
        Vector3 position = new Vector3(x, y, z);

        //GameObject.Instantiateでプレハブからインスタンスを作成する
        Instantiate(prefab,position,Quaternion.identity);

        //複製させる数に1を足す
        numberOfEnemys++;

        //待ち時間を初期化する
        elapsedTime = 0f;


    }



}