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。

とりあえず、これでプレイヤーが無限に走れるようになりました。
