スポンサーリンク
スポンサーリンク
UnityUnityメモ

【Unity】複数のprefabからランダムに選んで生成したい

Unity

はじめに

こんにちは!この記事ではUnityを使って、色の違う3種類のボール(スフィア)を1秒おきにランダムに出現させてみる方法を紹介します。初心者の方でも簡単にできるので、ぜひ最後まで読んでみてくださいね!

ボールの作成

プロジェクトを作ったら、必要な素材を準備します。今回はスフィアを3つ用意します。

Unityのメニューから「GameObject」→「3D Object」→「Sphere」を選ぶと、スフィアが作れます。

これを3回繰り返して、3つのスフィアを作ってください。

スフィアに色をつける

次に、それぞれのスフィアに違う色をつけます。プロジェクトビューを右クリックCreate→Materialで新しいマテリアルを作成して、三種類の色を作成しましょう。スフィアを一つ選んで、「Inspector」ウィンドウのところにマテリアルをドラッグ&ドロップすると、好きな色に変更できます。これを3つのスフィア全てに対して行って、それぞれ違う色のボールを作ってください。

スフィアのスクリプト

スフィアに簡単なスクリプトを作成して前方向に飛んでいくようにしましょう。

Create→C#Scriptを作成してコードを入力してみましょう。

スクリプトをダブルクリックして開くと、コーディングの画面が出てきます。

このスクリプトはこのスクリプトがアタッチされているオブジェクトを、毎フレームごとに少しずつ前方に移動させるというものです。ここで使用されているtransform.Translateメソッドは、オブジェクトの位置を変更するためのUnityの標準的な方法の一つです。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Sphere : MonoBehaviour
{
    void Start()
    {

    }

    void Update()
    {
        transform.Translate(Vector3.forward * 0.05f);
    }
}

コードを入力してスクリプトを保存したら三種類のボールにスクリプトをドラッグ&ドロップしてみましょう。

ためしにゲームを実行してみるとボールが前方向に飛んでいくようになっていると思います。

スフィアをPrefabにする

色がついたスフィアをPrefab(プレファブ)にします。プレファブとは、再利用可能なゲームオブジェクトのテンプレートのようなものです。プロジェクトウィンドウで右クリックして「Create」→「Folder」と進んで、新しいフォルダを作り、「Prefabs」と名付けます。それから、色をつけたスフィアをこのフォルダにドラッグ&ドロップして、3つのプレファブを作ります。シーン画面にすでに配置してあるスフィアは消してしまって大丈夫です。

スクリプトでランダムにスフィアを生成する

いよいよ、スフィアをランダムに生成する部分です。Unityのエディタで新しいスクリプトを作り、「GameManager」という名前にします。スクリプトを開いてここに、1秒おきにランダムにスフィアを生成するコードを書いていきます。

このスクリプトは、「Prefabs」という配列に3つの色の違うスフィアのプレファブを入れておいて、1秒ごとにその中からランダムに一つ選んで、ゲームの世界に出現させます。

ゲーム開始時にタイマーを設定し、毎フレームそのタイマーを減少させ、タイマーが0になったら新しいオブジェクトを生成し、タイマーをリセットする流れで動作します。


using UnityEngine;

public class GameManager : MonoBehaviour
{
    public GameObject[] Prefabs; // 生成するプレファブの配列
    private float time; // タイマー用の変数
    private int number; // ランダムに選ばれたプレファブのインデックス

    void Start()
    {
        time = 1.0f; // Startが呼ばれた時、タイマーを1秒に設定
    }

    void Update()
    {
        time -= Time.deltaTime; // タイマーを減少させる
        if (time <= 0.0f) // タイマーが0以下になったら
        {
            time = 1.0f; // タイマーをリセット
            number = Random.Range(0, Prefabs.Length); // プレファブ配列からランダムにインデックスを選ぶ
            Instantiate(Prefabs[number], new Vector3(0, 0, 0), Quaternion.identity); // 選ばれたプレファブを生成
        }
    }
}

作成したスクリプトは空のオブジェクトなどにアタッチして使用します。

GameManagerという名前の空のオブジェクトを作成してそこにアタッチしました。

Gamemanagerのinspector画面から生成するprefabをドラッグ&ドロップして設定します。

ゲームを実行すると1秒おきにランダムでprefabが作成されます。

フォルダやヒエラルキーを見やすくするアセット

まとめ

これで、Unityで色の違う3種類のスフィアを1秒おきにランダムに生成する方法を学びました。コードやプレファブの作り方が初めてでも、この記事を読めば一から作れるようになっています。Unityでゲームを作るのは、思ったよりも簡単で楽しいですよ。ぜひこのプロジェクトを試してみて、自分だけのゲームを作ってみてくださいね!

スポンサーリンク
C-BA memo
タイトルとURLをコピーしました