ぱふの自由帳

週3更新(火・木・日)を目指すUnityブログ。良ければフォローお願いします(`・ω・´)

Instantiateを使ってGameObjectを生成する

目次

はじめに

本記事では、

  • Instantiate関数とは何か
  • Instantiate関数の使い方

を解説したいと思います。

Instantiate関数とは

まずは何が出来る関数なのか確認しましょう。

何が出来るのか?

簡単に言えば、ゲームオブジェクトをシーン上に生成することが出来る関数です。 公式のチュートリアル等ですでに目にしている方も多いと思います!

どんな場面で使うのか?

例えば、「シューティングゲームで自機の弾を発射させたい!」という場面があったとします。
ゲームで使う予定の弾を全て初めから作っておく、というのは現実的ではありませんね。 そこで、Instantiate関数を使って生成を行います。

動きの確認

『百聞は一見に如かず』という言葉もありますし、実際に動きを見てみましょう!

f:id:PafuOfDuck:20190619192608g:plain

右側のキューブが複製されて左側に出現していることが確認出来るかと思います。(この時、ヒエラルキーウィンドウに(clone)という名前が付いたゲームオブジェクトが作られていることが確認できるはずです)

Instantiate関数の使い方

いきなりですが、サンプルコードを見てみましょう!
その後いくつか簡単に例を挙げて実例を挙げたいと思います。

使い方の例

public class Cube : MonoBehaviour
{
    public GameObject targetObject; //ゲームオブジェクト
    
    void Start () {
        Instantiate(targetObject, new Vector3( 1.0f, -1.0f, 0.0f), Quaternion.identity);
    }
}

Instantiate関数の解説

引数の取り方がいくつかあるので、簡単にですが3つほど紹介します。

その1

// 第1引数:Object型(GameObject型が一般的だと思います)
Instantiate(targetObject);

このように書けば、targetObjectのクローンtargetObjectと同じ場所に同じ角度で生成されます。

その2

// 第1引数:Object型(GameObject型が一般的だと思います)
// 第2引数:Transform型
Instantiate(targetObject, parent.transform);

このように書けば、targetObjectのクローンparentの子オブジェクトとしてtargetObjectと同じ場所に同じ角度で生成されます。

その3

これが最も使われていると思います!

// 第1引数:Object型(GameObject型が一般的だと思います)
// 第2引数:Vector3型
// 第3引数:Quaternion型(Quaternion.identityは回転なしという意味です)
Instantiate(targetObject, new Vector3(1.0f, -1.0f, 0), Quaternion.identity);

このように書けば、targetObjectのクローン座標(1.0, -1.0, 0)に、回転していない状態で生成されます。

まとめ

動的にゲームオブジェクトを生成したいときには欠かせない関数です。使えないと始まらないといっても過言ではない関数ですので、是非マスターしましょう!

Instantiateの紹介は以上です!

最後に

誤字や誤った説明に気づかれた方がいましたら、お手数ですがコメントTwitterのDMにてご連絡をお願いします。

また、よろしければフォローをお願いします!(励みになります・・・!!)

▼Twitterはコチラ twitter.com