UnityでGameObjectの配列を準備してインスペクタでprefabをドラッグして追加しておいて
一気に画面上で量産したい時があるけど、毎回覚えてなく検索しないといけないので、
ここに書いておいて毎回ここからコピーすることにした!
var MyGameObjects : GameObject[];
と書いておくことでインスペクタ上から自由に追加することができます。
注意:以下のコードではspawnpoint1の場所にに配列に追加したGameObjectが死ぬほど大量に量産されます。
var MyGameObjects : GameObject[];
var spawnpoint1 : GameObject;
function Update () {
for (var i=0; i < MyGameObjects.length; i++){
var MyGameObject : GameObject = MyGameObjects[i];
Instantiate(MyGameObject, spawnpoint1.transform.position,spawnpoint1.transform.rotation);
Debug.Log(ant.MyGameObject.name);
}
}
そこででタイマー処理
何秒かにごとに処理した場合は
var INTERVAL:float = 3.0f;
var timer:float = INTERVAL;
unction Update () {
timer -= Time.deltaTime;
if (timer <= 0)
{
// 任意の処理
Debug.Log("timer");
timer = INTERVAL;
}
}
こんな感じで一定の時間ごとの処理ができるので毎回こんなコードを利用してます。(上記コードは3秒ごと)
そこで!先ほどの処理と組み合わせると
//タイマー
var INTERVAL:float = 3.0f;
var timer:float = INTERVAL;
//ゲームオブジェクトの配列
var MyGameObjects : GameObject[];
var spawnpoint1 : GameObject;
function Update () {
timer -= Time.deltaTime;
if (timer <= 0)
{
// 任意の処理
instantiateGo();
timer = INTERVAL;
}
}
function instantiateGo() {
for (var i=0; i < MyGameObjects.length; i++){
var MyGameObject : GameObject = MyGameObjects[i];
Instantiate(MyGameObject,spawnpoint1.transform.position,spawnpoint1.transform.rotation);
}
}
こうすれば3秒ごとにゲームオブジェクトが作られますね。
なんか敵キャラをうじゃうじゃ作りたい時とか割とよく使いたい時があるんじゃないかと思います。
で、これだと定期的に敵が作られてなんか機械的な感じがバレるのでタイマーの時間をランダムにして結局
//タイマー
var INTERVAL:float = 3.0f;
var timer:float = INTERVAL;
//ゲームオブジェクトの配列
var MyGameObjects : GameObject[];
var spawnpoint1 : GameObject;
function Start() {
timer = Random.Range(0.5, INTERVAL);
}
function Update () {
timer -= Time.deltaTime;
if (timer <= 0)
{
// 任意の処理
instantiateGo();
//待ち時間をランダムにする
timer = Random.Range(0.5, INTERVAL);
}
}
みたいにしてタイマーの待ち時間を0.5秒からINTERVALに定義した秒数の間のランダムの値にしました。最初の実行時間もランダムにするためにStart()でもランダムになるようにしてます。
これで、なんか適当な感覚で敵がうじゃうじゃでるようになるぞ!そしてコードはそのまんまでprefabを追加し放題だ!ウワーイ!
0 件のコメント:
コメントを投稿