Google恐竜ゲーム風のランニングゲーム作成。Part2.床生成【Unityゲーム作成】

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。

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

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