- Instantiateメソッドってそもそもなに?
- Instantiateの使い方を知りたい!
という悩みを解決します。
まずInstantiateを使えば、オブジェクトを生成してくれるメソッドです。
では見ていきましょう。
Instantiateはオブジェクトを生成してくれるメソッド
Instantiateを使うことでオブジェクトを生成することができます。とりあえずこのような認識で大丈夫です。
例えば「定期的に矢が落ちてくるようにする」ようなとき。このときにInstantiateを使えば、定期的に矢を落とすことができます。
他にも「プレイヤーと接触したときに障害物を生成する」や「爆弾を定期的に落とす」など、オブジェクトを生成することだったらInstantiateメソッドが使われます。
Instantiateの使い方
public GameObject obj;
このようにして生成すオブジェクトは取得済みであることが前提です。
Instantiate(obj)
これでTransformの値はそのままでオブジェクトを生成できます。
Instantiate(obj, new Vector3(1.0f, 1.0f, 0.0f), Quaternion.identity);
Vector3の値を変更することで、生成したい場所にオブジェクトを生成することができます。「Quaternion.identity」は回転させないことを示しています。
Instantiate(obj) | Transformの値をそのままで生成 |
Instantiate(生成するオブジェクト, 位置, 回転) | オブジェクトを指定された位置、回転で生成する |
Instantiateメソッドを実際に1から使う
Instantiateを使って立方体を生成していきます。Instantiateメソッドを使ってみたい人は、一緒にやってみてくださいませ。
プロジェクトを作成
3D用のプロジェクトを作成してください。
レイアウトは【2 by 3】です。見にくい方は【Unity】効率アップ!レイアウト(Layout)を変更してできる5個の開発画面で【2 by 3】に変更してください
プログラム実行用の空のオブジェクトを作成する
【Hierarchy】→【Create】→【Create Empty】→【Rename】→【GameManager】
別に空のオブジェクトである必要はないのですが、わかりやすいように空のオブジェクトを使っていきます。名前は【GameManager】にします。
比較対象の立方体を作成する
【Hierarchy】→【Create】→【Cube】
今回はInstantiateメソッドを使って立方体を生成していきますが、比較対象があったほうがわかりやすいです。その比較対象のための立方体を作成しています。
名前はCubeのままで構いません。
位置を調整する
【Cube選択】→【Inspector】→【Transformの値を上のようにする】
Cubeを作成した時点で上のような値になっている場合がほとんどです。もし違ったら、変更してください。
スクリプトを作成する
【Projectウィンドウ】→【Create】→【C#Script】→【名前はCubeGenerator】
名前は「CubeGenerator」にしました。ではそのスクリプトをダブルクリックして、開いていきましょう。
スクリプトを記述
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CubeGenerator : MonoBehaviour {
public GameObject target;
// Use this for initialization
void Start () {
Instantiate(target, new Vector3(1.0f, 1.0f, 0.0f), Quaternion.identity);
}
// Update is called once per frame
void Update () {
}
}
Instantiate(生成するオブジェクト, 位置, 回転) | オブジェクトを指定された位置、回転で生成する |
Instantiate(target, new Vector3(1.0f, 1.0f, 0.0f), Quaternion.identity);
第一引数で生成するオブジェクトを指定してます。ここではtargetを指定しています。targetの中身をあとでいれます。
第二引数で生成するオブジェクトの位置を指定してます。
第三引数では生成するオブジェクトの回転を指定することができます。「Quaternion.identity」は回転させないことを示しています。
スクリプトを「GameManager」にアタッチする
【CubeGeneratorをGameManagerにドラッグ&ドロップする】
スクリプト単体のまま、オブジェクト単体のままは意味がありません。スクリプトをオブジェクトにアタッチすることで、スクリプトの内容を実行できます。
アウトレット接続する
【GameManager選択】→【Cubeをtargetにドラッグ&ドロップ】
スクリプトを書くところで「target」という変数を宣言しました。その「target」の中で生成したいオブジェクトを入れます。
実行してみる
ゲーム実行ボタンを押して実行すると、こうなります。X:1,Y:1,Z=0の部分にオブジェクトができています。
まとめ
Instantiate(obj) | Transformの値をそのままで生成 |
Instantiate(生成するオブジェクト, 位置, 回転) | オブジェクトを指定された位置、回転で生成する |
以上、Instantiateメソッドの説明と使い方です。
さぎのみや(@saginomiya8)でした。
コメント