初心者必見!現場レベルの「ゲーム制作講座PDF」を無料プレゼント中!▶

Unity Instantiateの使い方 | 実行中にオブジェクト生成

Unity 基礎操作・設定

「弾を撃つたびに、シーンにオブジェクトを増やしたい」

ゲーム中にキャラや弾、エフェクトを出現させるには、Instantiateでプレハブを複製します。
プレハブの基礎を学んだあと、実装で最初に使うAPIのひとつです。

この記事では、Instantiateの基本構文、位置・回転・親の指定、弾と敵のスポーン例、生成したオブジェクトの削除(Destroy)とのセット運用まで整理します。

  • プレハブは作ったが、ゲーム中に出現させる方法が分からない…
  • Instantiateしたオブジェクトが意図しない位置に出る。
  • 生成し続けてオブジェクトが増えすぎ、動作が重くなる。

✨ この記事でわかること

  • Instantiateの基本構文と戻り値
  • プレハブを指定して実行時に生成する手順
  • 位置・回転・親オブジェクトの指定方法
  • 弾・敵のスポーン実装例
  • Destroyとのセットでメモリを管理する考え方
  • 初心者でも理解できる解説

\プログラミング未経験でも大丈夫!まずは1本作り切ろう/

初心者が最初に選ぶならコレ

Unity ノンフィールドRPG
+スレスパ風JRPG講座

★★★★★ (Unity6対応)

Unity6対応・スマホ化対応の最新カリキュラム。「何から始めればいいかわからない」という初心者でも、ステップごとに手を動かすだけでRPGが完成します。

講座を見てみる \ゼロからでもスマホ対応RPGが作れる!/

憧れのアクションゲームに挑戦

Unity 2Dアクションゲーム
の作り方講座(ロックマン風)

★★★★★ (スマホ化・広告実装)

初心者でもロックマン風の横スクロールACTが作れる講座。7ステージ+ラスボスという本格構成で、スマホ化・広告実装まで対応。「自分のゲームをリリースしたい」夢を叶えます。

講座を見てみる \初心者でも本格ACTが完成する!/

3Dゲーム開発の入口はここ

ゼルダ風3Dアクションゲーム
の作り方講座

★★★★★ (スマホ化対応)

「3Dゲームって難しそう…」と感じている初心者向けの講座。全16回でゼルダ風3Dアクションがスマホ対応で作れるようになります。3D開発の基礎がしっかり身につきます。

講座を見てみる \初心者でも全16回で3Dゲームが完成!/

Instantiateとは|プレハブの実行時複製

Instantiateは、プレハブやシーン上のオブジェクトを、実行中にコピーして新しいGameObjectを作る関数です。
エディタで置いたオブジェクトとは別に、スクリプトから動的に増やせます。

弾の発射、敵の出現、爆発エフェクトの再生など、「タイミングで出す」処理の中心になります。
コピー元はプレハブにしておくのが一般的です。
同じ設定のオブジェクトを何度も作れるからです。

基本構文と最小例

もっともシンプルな形は次のとおりです。

public GameObject bulletPrefab;

void Fire
{
    Instantiate(bulletPrefab);
}

位置と回転を指定する版が実務ではよく使われます。

Instantiate(
    bulletPrefab,
    firePoint.position,   // 出現位置
    firePoint.rotation    // 出現時の向き
);

戻り値は生成されたGameObjectです。
後から操作したいときは変数に受け取ります。

GameObject bullet = Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);

Inspectorで bulletPrefab にプレハブをドラッグし、firePoint には弾の出口となる空オブジェクトを割り当てるのが定番の構成です。

位置・回転・親の指定

Instantiateには、オーバーロード(引数のパターン)がいくつかあります。

指定内容 効果
第2引数:position ワールド座標での出現位置。
発射口の transform.position を渡す
第3引数:rotation 出現時の向き。
発射口の transform.rotation で弾の進行方向を合わせる
親を指定する版 Hierarchy上で特定オブジェクトの子にして生成。
弾を「弾コンテナ」の子にまとめるなど

親を指定する例:

Instantiate(
    bulletPrefab,
    firePoint.position,
    firePoint.rotation,
    bulletContainer.transform  // 親オブジェクト
);

生成したオブジェクトを1つの親の下にまとめると、Hierarchyが散らからず、シーン切り替え時の一括削除も楽になります。

管理人
管理人

firePoint は空のGameObjectを子に置くだけで作れます。
キャラの手元や銃口に合わせておくと、弾の出どころがずれにくくなりますよ。

弾を撃つ実装例

ボタンやキー入力で弾を生成する流れです。

public GameObject bulletPrefab;
public Transform firePoint;
public float bulletSpeed = 10f;

void Update
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        GameObject bullet = Instantiate(
            bulletPrefab,
            firePoint.position,
            firePoint.rotation
        );

        Rigidbody rb = bullet.GetComponent<Rigidbody>;
        if (rb != null)
        {
            rb.velocity = firePoint.forward * bulletSpeed;
        }
    }
}

2Dの場合は Rigidbody2D と velocity の方向(Vector2.right など)を使います。
ColliderとRigidbodyがプレハブ側に付いていることも確認してください。

敵のスポーン実装例

一定間隔で敵を出すには、タイマーとInstantiateを組み合わせます。

public GameObject enemyPrefab;
public Transform[] spawnPoints;
public float spawnInterval = 3f;

float timer;

void Update
{
    timer += Time.deltaTime;
    if (timer >= spawnInterval)
    {
        timer = 0f;
        int index = Random.Range(0, spawnPoints.Length);
        Instantiate(
            enemyPrefab,
            spawnPoints[index].position,
            Quaternion.identity
        );
    }
}

spawnPoints に複数の出現位置を登録しておくと、ランダムな場所から敵が現れます。
Quaternion.identity は「回転なし」を意味する定番の書き方です。

出現数に上限を設けたい場合は、シーン内の敵の数を数えてから Instantiate する方法がシンプルです。
List や配列で管理する方法もありますが、最初は「同時に5体まで」といった条件を if 文で足すだけでも十分機能します。

スポーン実装の流れ
  • STEP1
    敵のプレハブを用意

    モデル・Collider・Rigidbody・動き用スクリプトをプレハブ化します。
  • STEP2
    出現位置を配置

    空オブジェクトをスポーン地点に置き、配列やTransformに登録します。
  • STEP3
    Instantiateで生成

    タイマーやウェーブ管理スクリプトから Instantiate を呼びます。
  • STEP4
    Destroyで整理

    倒した敵や画面外の弾は Destroy で削除し、オブジェクト数を抑えます。

Destroyとのセット運用

Instantiateで増やし続けると、オブジェクトが溜まってパフォーマンスが落ちます。
Destroyで不要になったオブジェクトを消す運用がセットになります。

// 3秒後に消す
Destroy(gameObject, 3f);

// 衝突時に即消す
void OnTriggerEnter(Collider other)
{
    if (other.CompareTag("Enemy"))
    {
        Destroy(other.gameObject);
        Destroy(gameObject); // 弾自身も消す
    }
}

弾には「生成から2秒で消える」、敵には「HPが0になったら消える」といった寿命ルールを決めておくと、メモリ管理が楽になります。

管理人
管理人

「撃ち続けたら重くなった」は、Destroy忘れのサインです。
Hierarchyのオブジェクト数をPlay中に眺める習慣をつけると、原因に気づきやすくなりますよ。

よくあるつまずき

Instantiateでよくある問題と対処です。

  • プレハブ未設定で null エラー → Inspectorで Prefab 欄を確認
  • 位置が(0,0,0)に出る → position 引数を渡し忘れ。
    firePoint を指定
  • 生成しても動かない → プレハブに Rigidbody や移動スクリプトがあるか確認
  • エディタで増え続ける → Play中の生成は停止で消える。
    ビルドでは Destroy が必要
  • 向きがずれる → firePoint の rotation を渡す。
    2Dなら Z 軸回転を調整

オブジェクトプール(使い回し)という高度な手法もありますが、最初は Instantiate + Destroy で十分です。
動くことを優先しましょう。

プレハブを変更したあとは、シーンに既に置いてあるインスタンスには反映されません。
プレハブ側を直したら、Hierarchyのインスタンスを選び「Overrides → Apply」するか、再度 Instantiate して確認する習慣をつけると、設定ミスに気づきやすくなります。

記事を読んで「作ってみたい!」と思ったら!初心者でも1本完成できる講座で実力をつけよう

知識を読むだけで終わらせるのはもったいない。実際に手を動かしてゲームを1本完成させることで、理解が一気に深まります。プログラミング未経験からでも取り組める講座で、ゲーム開発の第一歩を踏み出しましょう。

Unity ノンフィールドRPG+スレスパ風JRPG講座【Unity6対応!初心者でもデッキ構築×JRPGをスマホ向けに作れる!】

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座

  • Unity6対応・スマホ化対応で最新環境のゲーム開発が学べる
  • Slay the Spire風のデッキ構築システム×JRPGの組み合わせを実装
  • 初心者でも迷わず進められる丁寧な解説構成
  • ノンフィールドRPGとデッキ構築JRPGの2つをまとめて学べるセット講座

Unity ノンフィールドRPGの作り方講座+Slay the Spire風デッキ構築JRPGの作り方講座は、プログラミング未経験の初心者でも取り組みやすい、ステップバイステップ形式の講座です。

Unity6対応・スマホ化対応の最新カリキュラムで、読んで「なるほど」と思った知識を、実際に動くゲームとして形にする体験ができます。

「何から始めればいいかわからない…」という初心者が最初に選ぶ一本として最適な講座です。

Unity6対応・スマホ化対応の最新カリキュラム
ゼロからでもRPGを完成させよう
→ スレスパ風デッキ構築JRPG講座を見てみる
初心者でもスマホ対応のRPGが作れる!まずは1本完成を目指そう!

Unity 2Dアクションゲームの作り方講座(ロックマン風)【全16回!初心者でもスマホ化・広告実装まで対応した本格横スクロールACTが作れる!】

Unity 2Dアクションゲームの作り方講座(ロックマン風)

  • ロックマン・マリオ・カービィのような横スクロールACTをゼロから開発
  • 7ステージ+ラスボスステージの本格的なゲーム設計を初心者でも実現
  • スマホ化・AdMob広告実装まで対応してリリースまで見据えた構成
  • 敵AI15体・多彩なマップギミック・武器システムを完全実装
  • 完全オリジナルゲームをアセット不使用で素材提供付きで制作

Unity 2Dアクションゲームの作り方講座(ロックマン風)は、ロックマン・スーパーマリオ・星のカービィのような2D横スクロールアクションゲームを、初心者でもゼロから開発できるようになる講座です。

全16回で当たり判定・物理挙動・敵AIの知識を実際のゲームコードとして実装する体験が詰め込まれています。スマホ化・広告実装まで対応しているため、「作って終わり」ではなくリリースまで見据えた実践スキルが身につきます。

「憧れのアクションゲームを自分の手で作ってみたい」という初心者に強くおすすめの一本です。

スマホ化・広告実装まで対応した本格横スクロールACT
初心者でもロックマン風2Dアクションをリリースまで作り上げよう
→ 2Dアクションゲームの作り方講座を見てみる
初心者でも本格ACTが完成する!広告収益まで視野に入れた実践スキルを手に入れよう!

ゼルダ風3Dアクションゲームの作り方講座【全16回!初心者でも3Dアクションがスマホ対応で作れる!】

ゼルダ風3Dアクションゲームの作り方講座

  • ゼルダの伝説・モンハン・原神のような3Dアクションをゼロから開発
  • 「3Dは難しそう」と感じている初心者でも取り組みやすい丁寧な解説構成
  • スマホ化対応で実機で動かせるゲームが完成
  • アセットを使った実践的なゲーム開発手法が身につく
  • 画像・動画・全ソースコード公開の充実したサポート

ゼルダ風3Dアクションゲームの作り方講座は、「3Dゲームは難しそう…」と感じている初心者こそおすすめの入門講座です。

全16回の丁寧な解説で、ゼルダの伝説・モンハン・原神のような本格的な3Dアクションゲームを確実に完成まで導きます。スマホ化対応で実機で動かせるため、初めて3Dゲームを作り上げた達成感がひときわ大きい講座です。

「3Dゲームを自分でも作れるか試してみたい」という初心者の最初の一歩として最適です。

初心者でも3Dアクションがスマホ対応で完成する
ゼルダ風3Dアクションゲームで3D開発の壁を一気に突破しよう
→ ゼルダ風3Dアクションゲームの作り方講座を見てみる
全16回でスマホで動くオリジナル3Dゲームを完成させよう!

まとめ

UnityのInstantiateは、プレハブを実行中に複製してGameObjectを生成するAPIです。
位置・回転・親を指定でき、弾の発射や敵の出現に使います。
生成したオブジェクトはDestroyで削除し、増えすぎを防ぐのが基本です。

今日は弾用プレハブを1つ作り、キー入力で Instantiate して出現させるところまで試してみてください。
出たオブジェクトに寿命を付けて Destroy する処理も足すと、実戦に近い流れが体験できます。

プレハブと生成処理を実践で学びたい方は、Unity入門の森の講座も参考になります。
シューティングやアクションなど、Instantiateが自然に登場する作品を通して、スポーン設計の感覚を身につけられます。
まずは1発、弾を撃てるところを目指しましょう。

コメント

タイトルとURLをコピーしました