- オブジェクトをランダムに生成する方法が知りたい。
- Prefabって何のこと?
この記事はこんな方に向けて書いています。
こんにちはマナビヤです♪
前回の記事では「落下するオブジェクトを作成する方法と当たり判定」について説明しました。
前回の記事はこちら↓

しかし、これだけだと落下物が1つ落ちるだけでゲームが終了してしまい、全然面白くありません😅
そこで今回は落下するオブジェクトをランダムに生成し続ける方法について説明します。
つまづくことが無いようにゆっくり説明していきますので、しっかりついてきてください。
それではいってみましょう。
落下するオブジェクトをランダムに生成する方法
落下するオブジェクトをランダムに生成するには
- Prefab(設計図)を作成する
- ジェネレータスクリプトを作成する
- 工場オブジェクトを作成する
- ジェネレータスクリプトにPrefabを関連付ける
以上の4つの工程で進めていきます。
1.Prefab(設計図)を作成する
それでは、Prefabを作成する方法から順に説明していきましょう。
Prefabとは
まずPrefabというのは、オブジェクトの設計図のことです。
この設計図があれば、いくつでも同じオブジェクトを作成する事が出来るようになるので、これを使ってランダムに落下物のオブジェクトを生成していきます。
Prefabの作成手順
まず、「iwa」オブジェクトをヒエラルキー欄でドラッグし、プロジェクト欄にドロップします。

すると、このようにプロジェクト欄に「iwa」のPrefabが作成されるので、「iwaPrefab」に名前を変更してください。
Prefabを作ったら元の「iwa」オブジェクトは必要なくなるので、右クリック→Delete でオブジェクトを消去してください。
これで、オブジェクトのPrefab(設計図)を作成することができました。
そんなに難しい所は無いのでここまでは問題ないですね☺
2.ジェネレータスクリプトを作成する
次にジェネレータスクリプトを作成する方法について説明していきます。
ジェネレータスクリプトとは
ジェネレータスクリプトというのは、設計図を元にしてオブジェクトをランダムに生成する指示を出すプログラムのことです。
ジェネレータスクリプトの作成手順
ジェネレータスクリプトを作成するには、まずプロジェクト欄で 右クリック → Create → C♯を選択してスクリプトファイルを作ります。
今回のファイル名は「IwaGenerator」にしました。

それでは「IwaGenerator」スクリプトに以下のプログラムを書き込んでください。

それでは、細かく説明していきます。
以下の部分は「IwaPrefab」を格納する変数を宣言、span変数に1秒を代入、delta変数に0を代入しています。

次に、1秒ごとにランダムに岩を生成していくプログラムがこの部分になります。

ここでは、「this.delta」に経過していく時間(Time.deltaTime)を加算していく。
また if(this.delta > this.span) のif文は、もし「this.delta」が1秒より上になった場合。
this.deltaに0を代入してリセットする。
GameObject go という変数にGameObject型のIwaPrefabを返す。
int px = Random.Range(-6, 7) ;
pxにx座標-6から7の間からランダムに代入する。
go.transform.position = new Vector3(px, 7, 0 );
この部分は岩の出現座標に(px, 7, 0)を代入する。
3.工場オブジェクトを作成する
それでは工場オブジェクトを作成する方法を説明します。
工場オブジェクトとは
工場オブジェクトというのは実際にゲームシーンに配置されるものではなく、Prefabをランダムに生成する機能を持った「空のオブジェクト」のことです。
工場オブジェクトの作成手順
まず、ヒエラルキー欄で「Create」→「Create Empty」を選択して空のオブジェクトを作成します。
名前は「IwaGenerator」にしておきましょう。

次にプロジェクト欄の「IwaGenerator」スクリプトをドラッグして、ヒエラルキー欄の「IwaGenerator」オブジェクトにドロップします。
名前が同じなので紛らわしいですが、要は「スクリプト」を「オブジェクト」にドラッグ&ドロップすることです。

これで工場オブジェクトは完成です。
4.ジェネレータスクリプトにPrefabを関連付ける
最後に、先ほど作成した「IwaGenerator」スクリプトに「iwaPrefab」を関連付ける方法を説明します。
まず、ヒエラルキー欄にある「IwaGenerator」オブジェクトをクリックして、インスペクター欄の「IwaGenerator」スクリプトを探します。

この欄に「iwaPrefab」というものがありますので、ここの枠にプロジェクト欄の「iwaPrefab」をドラッグ&ドロップしてください。

これでオブジェクトをランダムに生成する手順が終了しました。
それでは早速このSceneを実行してみましょう。

このように岩が一定の感覚でランダムに落ちてくるようになりました。
まとめ
今回はオブジェクトをランダムに生成する方法を説明しました。
ここまで来るとだいぶゲームらしくなってきましたね!
次回は、キャラクターに岩が当たったらダメージを受けるように設定していきましょう。
それでは最後までありがとうございました´ω`)ノ
完成するゲームはこちら
関連書籍
Unityの教科書 Unity2019完全対応版 2D&3Dスマートフォンゲーム入門講座 (Entertainment&IDEA)
- 作者:北村 愛実
- 出版社/メーカー: SBクリエイティブ
- 発売日: 2019/06/28
- メディア: 単行本
コメント