【Unity】オブジェクトをランダムな位置、角度で配置する【C#】
今回はオブジェクトをランダムな位置に生産する方法をまとめたいと思います。
すでに配置されているオブジェクトを複製して配置する方法もありますが、プレハブから制作する方法を紹介していきます。
ちなみに、プレハブとは設計図のようなものです。多分。
コード内容
では早速コードの方を書いていきます。
using UnityEngine; using System.Collections; public class random : MonoBehaviour { //プレハブを変数に代入 public GameObject cube; void Start () { //オブジェクトの座標 float x = Random.Range(0.0f, 2.0f); float y = Random.Range(0.0f, 2.0f); float z = Random.Range(0.0f, 2.0f); //オブジェクトを生産 Instantiate(cube, new Vector3(x, y, z), Quaternion.identity); } }
Random.Range();は、ランダムな数字を生産することができます。
第一引数で生産する数字の最低値を、第二引数で最大値を指定しています。
今回のコードではfloat型の変数に代入したため0.0~2.0の数字が生産されますが、int型の変数に代入することで、整数のみにすることも可能です。
オブジェクトを生産するInstantiate();は、第二引数に位置をVector3で、第三引数に角度をQuaternionで指定できます。
角度はランダムにしませんでしたが、変更したければ第三引数で指定してください。
プレハブを指定する
さて、スクリプトはこれでOKなのですがこれだけだとどんなプレハブを使うのかがわかりません。
そこで、プレハブを指定しますが今回は用意したプレハブがないので、新しく作ります。
ただの立方体でOKでので、Unityでプレハブにしたいオブジェクトを生産して、それをProjectパネルにドラッグ&ドロップします。
すると、こんな感じでAssetsに追加されます。
ここまでできたら先程書いたスクリプトをクリックしてinpectorパネルからプレハブを指定します。
指定できたらカメラでもなんでもいいので先程書いたスクリプトを適用します。
これで実行してみると...
x,y,zが0~2のランダムな位置にオブジェクトが配置されます!
今回のまとめ
- Instantiate();でオブジェクトを配置できる。
- ランダムにしたい場合はRandom.Range();を使って位置を指定する。