敵を適当な位置に生成したり、障害物を生成させるときによく使うと思います。
そんなスクリプトを紹介していきます。
準備
ヒエラルキーでオブジェクトの生成を管理する空のオブジェクトを作り、名前を「Spawner」とします。
生成させるオブジェクトも準備しましょう。
僕の場合はプレハブ化させたこの球体を使います。
準備は以上です。
生成スクリプト
プロジェクトウィンドウでCreate>C# Scriptでスクリプトを作りましょう。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class spawner : MonoBehaviour
{
float timer = 0;
float SpawnTime = 3.0f;
[SerializeField] GameObject sphere;
void Update()
{
Generate();
}
void Generate()
{
this.timer += Time.deltaTime;
if (timer > SpawnTime)
{
timer = 0;
GameObject Sphere = Instantiate(sphere);
float x = Random.Range(-3, 3);
float y = Random.Range(1, 6);
Sphere.transform.position = new Vector3(x, y, 0);
}
}
}
このスクリプトをSpawnerにアタッチしましょう。
spawnerを選択し、インスペクターのSphereの項目に生成したいプレハブをアタッチします。
これで実行をしてみますと
ランダムな位置に生成します。
スクリプトの説明
ポイントはこの部分
float x = Random.Range(-3, 3);
float y = Random.Range(1, 6);
ここで生成するプレハブのXとY座標の位置を乱数で指定してます。
X座標は、ー3から2の間
Y座標は、1から5までの間の範囲で生成するようになっています。
注意:Random.Range(-3, 3);この部分ですが、指定した数字未満の値になります。例えば3と書けば2となります。
GameObject Sphere = Instantiate(sphere);でプレハブを生成し、
Sphere.transform.position = new Vector3(x, y, 0);でsphereの生成位置を代入します。
Z座標は「0」で固定しています。
まとめ
Random.Range関数はほかにも便利な使い方があるので、いつか紹介したいと思います。
コメント