UnityでGoogle恐竜ゲーム風味のゲーム制作、第2回目です。今回はいくつかの床を用意して、ランダムに自動生成されるようにしていきます。
はじめに
今回は第2回目です。第1回目は下記から。
今回やる事
パート2の今回は床のパターンをいくつか作成して、ランダムで床が自動生成されるようにします。
製作開始
では、前回の続きから開始していきます。
床を生成
まずは「床(Cube)」をコピーして、つながる位置に移動。
X方向の長さが10なので、コピーした床の位置Xを10にするとつながる感じになります。
これを連続して生成していけば無限に続く床が作成できます。
コピーした床をground1と言う名前にしてプレハブ化します。
床生成スクリプトの作成
床を生成するスクリプトを作成します。
空のオブジェクトを作成して、名前を「GameManager」に。同じ名前でスクリプトを作成してGameManagerオブジェクトにくっつけおきます。
下記の様にスクリプトを変更、変数にはプレハブをセットします。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameManager : MonoBehaviour { public GameObject ground; void Start() { Instantiate(ground, new Vector3(10, 0, 0), Quaternion.identity); } }
ゲームを実行してみると、床が一つ生成されるのが分かります。
次に、Startで床を生成するのではなく、Update内で条件を付けて床の生成を行うようにします。
下記の様にスクリプトを変更。プレイヤーが進むにつれてドンドン床を生成していきます。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameManager : MonoBehaviour { public GameObject ground; public GameObject player; private float _spawnpoint = 10; void Update() { if (player.transform.position.x > _spawnpoint - 20) { Instantiate(ground, new Vector3(_spawnpoint, 0, 0), Quaternion.identity); _spawnpoint += 10; } } }
変数にプレイヤーをセットします。
試しに動かしてみて、床がどんどん生成されていればOK
障害物の設置
次に敵キャラと言うか、ジャンプで超える障害物を作成していきます。
床(Cube)をコピーしてground2とします。
ground2の配下に「3Dオブジェクト」の「キューブ」を追加。位置やスケールは適当にセットしておきます。
下記の様な感じで出っ張った部分が障害物です、これもプレハブ化しておきます。
少し形を変えたものもground3としてプレハブを作成しておきます。下記の様にとりあえず3パターンの床を用意。
ランダムで生成
床をランダムで生成するように下記の様にスクリプトを変更。
using System.Collections; using System.Collections.Generic; using UnityEngine; public class GameManager : MonoBehaviour { public List<GameObject> ground; public GameObject player; private float _spawnpoint = 10; private GameObject _ground; void Update() { if (player.transform.position.x > _spawnpoint - 20) { _ground = ground[Random.Range(0, ground.Count)]; Instantiate(_ground, new Vector3(_spawnpoint, 0, 0), Quaternion.identity); _spawnpoint += 10; } } }
変数の配列には床を下記の様にセット。
実際に実行してみてランダムで床が生成されていればとりあえずOK。
とりあえず、これでプレイヤーが無限に走れるようになりました。