Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
53
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@Teach

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
53
Help us understand the problem. What are the problem?