LoginSignup
52
56

More than 5 years have passed since last update.

オブジェクト生成の仕方 Instantiate

Last updated at Posted at 2016-02-20

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を用いて関数を呼び出したりできる.

52
56
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
52
56