UnityでInstantiateメソッドを使ってオブジェクトを生成するやり方を解説します.
生成する対象はあらかじめ取得してあるとします.
public GameObject obj;
Prefabから生成する.
PrefabのTransformのままで生成する場合
Instantiate(obj);
引数には生成したいオブジェクトが入る.
生成する位置,回転を指定して生成する場合
例としてスクリプトをつけたオブジェクトの位置で,Prefabと同様の回転で生成する.
Instantiate(obj, this.transform.position, Quaternion.identity);
スクリプト例
InstantiateTest.cs
using UnityEngine;
using System.Collections;
public class InstantiateTest : MonoBehaviour {
//生成するゲームオブジェクト
public GameObject target;
void Update(){
//スペースを押したら
if (Input.GetKeyDown (KeyCode.Space)) {
//Instantiate( 生成するオブジェクト, 場所, 回転 ); 回転はそのままなら↓
Instantiate (target, new Vector3 (1.0f, 2.0f, 0.0f), Quaternion.identity);
}
}
}
Instantiate(生成するオブジェクト, 生成する位置, 回転)
第一引数は生成するオブジェクトを指定する.
今回はobjを生成するため,objをつっこむ.
第二引数は生成する場所をVector3型で指定する.
今回はthis.transform.position
第三引数は生成するオブジェクトの回転を指定する.
今回はPrefabと同じままの回転にするために
Quaternion.identityをつっこむ.
生成したオブジェクトになんらかの処理を行いたい場合
例えば,生成したオブジェクトの名前を変更する処理を行うとする.
弾丸を生成し,その弾丸の名前を"Bullet"にしたい場合,以下のスクリプトでできる.
//オブジェクトを変数名bulletで生成
GameObject bullet = Instantiate(obj) as GameObject;
//名前を変更
bullet.name = "Bullet";
GetComponentやSendMessageを用いて関数を呼び出したりできる.