個々のフルーツの動作を作成したところで、プレハブ化しましょう。
現時点だとゲームを実行してもりんご1個とバナナ1個が落下してくるだけで、それをキャッチしたら終わりになっちゃいます。
今回は、プレハブを作って一定の時間でランダムな位置に生成するようにします。
りんごのPrefab・ジェネレータスクリプトを作成しよう
まずは、りんごのプレハブを作りましょう。
ヒエラルキーウィンドウにある「FP_apple」をプロジェクトウィンドウにドラッグ&ドロップ。
すると、オリジナルのプレハブを作るか聞かれるので「Original Prefab」を選択して新しいプレハブを作成するようにします。
元々プレハブ化されていたりんごを利用しても構わないんですけど、折角これまでコライダやTagなどの設定を付加してきたので、こちらのりんごをプレハブ化して使いましょう。
プレハブを作成したら名前を「applePrefab」等に変更します。
ジェネレータスクリプトを作成する
りんごを生成するスクリプトを作ります。スクリプトを新規作成して名前を「fruitGenerator」にします。まずは、一定間隔でランダムに降ってくるようにしてみましょう。
上のスクリプトは、2秒間隔でランダムな位置からりんごを落下させるスクリプトです。
deltaTimeを使ってフレーム間の時間差を計算して、2秒経過するごとにりんごを生成しています。
落下させる場所は、Random.Rangeメソッドを使います。X座標とY座標にそれぞれ「0~5」の値をランダムで代入します。
この書き方だと、最大値として指定してある「6」を含まないので注意が必要です。
なぜ「0~5」という範囲なのか?について説明します。
これは、俯瞰から見たシーンビューです。
私の場合は、原点が画面の左下の位置になっています。また、TerrainWidthとLengthがそれぞれ「5」になっているので「0~5」という範囲になります。
りんごが降ってくる高さは「5」で固定しています。この値を固定しないと2秒間隔でりんごが降ってこないので気をつけましょう。
Y座標もランダムにするのは、レベルデザイン的に有りといえば有りなんですけどね。
とりあえず、スクリプトが出来たら保存しておきましょう。
空のオブジェクトにスクリプトをアタッチしてゲームを実行する
今作ったスクリプトをアタッチするために空のオブジェクトを作成しましょう。
ヒエラルキーウィンドウから「Create」→「Create Empty」を選択。
作成されたGameObjectに「fruitGenerator」スクリプトをドラッグ&ドロップします。
「applePrefab」の実体をスクリプトに渡したらゲームを実行してみましょう。
こんな感じで、ランダムに2秒間隔でりんごが降ってくればOKでしょう。
他のフルーツにも同じような設定で応用できると思います。
ただ、各フルーツを2秒間隔にしてしまうと、画面が大量のフルーツで溢れかえりそうですね。
その辺は間隔を調整することで、バランス良くしていきたいですね。