UnityUnityメモ

【初心者向け】Unityでランダムな時間で表示されるキューブを作ってみよう

Unity

1. はじめに

みなさん、Unityを使ったゲーム作りに興味はありますか?今回のチュートリアルでは、クリックするとキューブが出現し、ランダムな時間だけ表示されるプログラムを作成してみます。

「Unityって難しそう…」と思っている方も大丈夫!初心者向けに、簡単で分かりやすく解説します。スクリプトの書き方や、Unityエディタの操作方法も一緒に学んでいきましょう。


このチュートリアルを通して、以下のスキルが身につきます:

  • Unityでオブジェクトを生成・制御する方法
  • ランダムな時間を扱うスクリプトの書き方
  • インタラクティブなゲーム要素を追加する方法

ゲーム作りの基本を楽しみながら学べる内容です。それでは、さっそく始めましょう!

Unityを触ったことがないという方はコチラの記事から見てみてください!



2. 準備

Unityでプロジェクトを作成し、必要なオブジェクトと環境を設定していきましょう!以下の手順を進めるだけで、スムーズに準備が整います。


1. Unityプロジェクトの作成

  1. Unity Hubを開きます。
  2. 新規プロジェクト」をクリックします。
  3. テンプレートを「3D」に設定し、プロジェクト名を「RandomCube」としましょう(名前は自由です)。
  4. 「作成」をクリックしてプロジェクトを作成します。

2. キューブの配置

  1. Unityエディタが開いたら、Hierarchy(ヒエラルキー)ウィンドウを右クリックします。
  2. 3D Object」→「Cube」を選択します。
  3. 作成されたキューブの名前を「MyCube」に変更します。
  4. Inspector(インスペクター)ウィンドウで以下の変更を行います:
    • TransformScale(1, 1, 1)に設定(デフォルトのままでOK)。
    • キューブの位置が中央にあることを確認します(Position: (0, 0, 0))。

3. 空のゲームオブジェクトを作成

  1. Hierarchy(ヒエラルキー)ウィンドウを再度右クリックします。
  2. Create Empty」を選択します。
  3. 作成された空のゲームオブジェクトの名前を「CubeController」に変更します。

4. 必要なフォルダを作成

  1. Project(プロジェクト)ウィンドウを開き、空白部分を右クリックします。
  2. Create」→「Folder」を選択して以下のフォルダを作成します:
    • Scripts(スクリプトを保存するためのフォルダ)
    • Prefabs(オブジェクトを再利用する場合に使います)

これで準備は完了です!次は、スクリプトを作成してキューブの挙動をコントロールしていきます。



3. スクリプト作成

次に、キューブの挙動を制御するスクリプトを作成します。スクリプトはUnityプロジェクトの「心臓部分」ともいえる重要な役割を果たしますが、ここではシンプルなコードで楽しく学べるように進めます!


1. スクリプトを作成する

  1. Project(プロジェクト)ウィンドウで「Scripts」フォルダを開きます。
  2. 空白部分を右クリックして、「Create」→「C# Script」を選択します。
  3. 新しいスクリプトに「RandomObject」と名前を付けます。
  4. 作成したスクリプトをダブルクリックして開きます。Unityのデフォルトエディタ(通常はVisual Studio)が起動します。

2. コードを記述する

以下のコードをコピーして、「RandomObject」スクリプトに貼り付けてください。

コード全体の説明

このスクリプトは、ユーザーがマウスの左ボタンをクリックしたときに、指定されたオブジェクトをランダムな時間だけ表示し、その後非表示にします。

各部分の説明

  1. 変数の宣言
    • obj: このスクリプトで操作するオブジェクトです。
    • time: 時間を管理するための変数です。オブジェクトを表示する残り時間を示します。
    • i: ランダムな時間を保持するための変数です。
  2. Startメソッド
    • ゲームが始まるときに呼び出されます。
    • time変数を0に初期化します。
  3. Updateメソッド
    • 毎フレーム(1秒間に数十回)呼び出されます。
    • timeを毎フレーム、経過した時間(Time.deltaTime)だけ減少させます。
    • timeが0以下になると、オブジェクトを非表示(SetActive(false))にします。そうでない場合は表示(SetActive(true))します。
    • マウスの左ボタンが押されたとき(Input.GetMouseButtonDown(0))、iに0.5秒から5.0秒の間のランダムな値を設定し、それをtimeに代入します。

全体の動き

  1. ゲームが始まると、timeが0に設定されます。
  2. 毎フレーム、timeが減少します。
  3. timeが0以下になると、オブジェクトが非表示になります。0より大きいと表示されます。
  4. マウスの左ボタンが押されると、ランダムな時間(0.5秒から5.0秒)がtimeに設定され、オブジェクトがその時間だけ表示されます。
using UnityEngine;

public class RandomObject : MonoBehaviour
{
    public GameObject obj; // キューブの参照
    private float time;    // 表示される時間をカウントする変数
    private float i;       // ランダムな時間を保持する変数

    void Start()
    {
        time = 0.0f; // 初期化
    }

    void Update()
    {
        // 時間を減らす
        time -= Time.deltaTime;

        // 時間が0以下なら非表示、そうでなければ表示
        if (time <= 0.0f)
        {
            obj.SetActive(false);
        }
        else
        {
            obj.SetActive(true);
        }

        // マウスの左クリックを検知
        if (Input.GetMouseButtonDown(0))
        {
            i = Random.Range(0.5f, 5.0f); // 0.5秒~5秒の間でランダムな値を取得
            time = i; // 表示時間を設定
        }
    }
}



4. スクリプトの設定

スクリプトを作成したら、Unityエディタで正しく設定し、動作するように調整します。以下の手順で進めましょう!


1. スクリプトをアタッチする

  1. Hierarchy(ヒエラルキー)ウィンドウで、「CubeController」オブジェクトを選択します。
  2. 作成した「RandomObject」スクリプトをProject(プロジェクト)ウィンドウから「CubeController」にドラッグ&ドロップします。

2. キューブをスクリプトに設定

  1. 「CubeController」を選択した状態で、Inspector(インスペクター)ウィンドウを確認します。
  2. 「RandomObject」スクリプトのObjフィールドが表示されます。
  3. Hierarchy(ヒエラルキー)ウィンドウから「MyCube」をこのフィールドにドラッグ&ドロップします。

これでスクリプトの設定は完了です!次は、Unityのプレイモードで動作を確認しましょう。



5. 実行

いよいよ完成したプログラムを動かしてみましょう!以下の手順で、動作確認を進めます。


1. プレイモードを開始

  1. Unityエディタの上部にある「Play」ボタン(三角の再生マーク)をクリックします。
  2. Unityがプレイモードに切り替わります。

2. 動作確認

  1. マウスの左クリックをしてみましょう。
  2. 「MyCube」がランダムな時間(0.5秒~5秒の間)だけ表示され、その後非表示になることを確認します。

3. 正常に動作しない場合

もしプログラムが期待どおりに動かない場合は、以下をチェックしてください:

  • スクリプトが正しくアタッチされているか?
    • 「CubeController」に「RandomObject」スクリプトが設定されていますか?
  • Objフィールドが正しく設定されているか?
    • 「MyCube」がObjフィールドにドラッグ&ドロップされていますか?
  • コンソールにエラーが表示されていないか?
    • Unityエディタの下部にある「Console(コンソール)」タブを確認し、エラーが表示されていれば内容を確認してください。

4. 楽しんでみよう!

動作が確認できたら、以下のような変更を試してみましょう:

  • 表示時間の範囲を変更する: スクリプト内のRandom.Range(0.5f, 5.0f)を変更して、0.2秒~2秒などに設定してみましょう。
  • 複数のキューブを追加: スクリプトを応用して、複数のキューブがランダムに表示されるように改造してみましょう。

これでプログラムの実行は完了です!Unityのプログラミングが少し身近に感じられたのではないでしょうか?



よくある質問(Q&A)

Q
キューブが表示されません!
A

スクリプトが正しくアタッチされているか、「Obj」フィールドに正しいオブジェクトが設定されているか確認してください。

Q
時間がランダムに変化しません。
A

コード内のRandom.Range(0.5f, 5.0f)が正しく設定されているか確認しましょう。

Q
エラーが出てスクリプトが動きません。
A

スクリプト内にタイポ(スペルミス)がないか、エディタのConsoleを確認してください。

おすすめのアセット

「Survival Engine Online」は、マルチプレイヤーサバイバルゲームを簡単に作成できるUnityアセットです。このアセットは、プレイヤーがオンラインで協力して生き残るゲームの制作をサポートします。特に、初心者でも使いやすいシステムが揃っており、すぐにゲーム開発を始められます。

主な特徴としては、広大なマップの生成、アイテムの収集やクラフト、建築システム、動物や敵との戦闘などが含まれます。また、ネットワークの同期が簡単に設定できるので、スムーズなマルチプレイが実現します。