UnityUnityメモ

Unity初心者向け:クリックで生成するたびにサイズが変わる球体を作ろう!

Unity

はじめに

Unityは、初心者からプロまで幅広いユーザーに利用されている強力なゲーム開発エンジンです。今回は、クリックするたびに球体(Sphere)を生成し、その大きさを3段階で変えるスクリプトの作り方を解説します。

Unityの操作やスクリプト作成が初めての方でも安心してください!手順を一つずつ丁寧に説明していくので、一緒に進めてみましょう。この記事を読み終わるころには、プレハブの活用方法やクリックイベントの実装ができるようになりますよ。

それでは、始めましょう!



1. Sphereプレハブの作成

まずは、クリックで生成する球体(Sphere)の元となるプレハブを作成します。プレハブは、オブジェクトのテンプレートのようなものです。同じオブジェクトを何度も簡単に生成できる便利な機能です。


① ヒエラルキーウィンドウで球体を作成

  1. Unityエディターのヒエラルキー(Hierarchy)ウィンドウを右クリックします。
  2. **「3D Object」→「Sphere」**を選択します。
    • これで、シーンに球体が追加されます。

② 作成した球体をカスタマイズ(任意)

球体の見た目を変更したい場合は、以下を試してみましょう:

  • 色を変える
    1. ヒエラルキーでSphereを選択。
    2. インスペクター(Inspector)ウィンドウで、「Material」フィールドを設定。
    3. 新しいマテリアルを作成し、好きな色を指定します。
  • 名前を変更する
    ヒエラルキーでSphereを右クリックし、「Rename」を選択して分かりやすい名前を付けましょう(例: BallPrefab)。

③ プレハブ化する

  1. 作成した球体をプロジェクトウィンドウにドラッグ&ドロップします。
    • プロジェクトウィンドウには「Assets」フォルダが表示されています。
  2. ドロップすると、新しいプレハブが作成されます。

これで、球体のプレハブが完成しました!次は、このプレハブを使ってクリックで生成できるようにしていきましょう。



2. スクリプトの作成

次に、クリックするたびに球体(Sphere)を生成し、その大きさを変えるスクリプトを作成します。Unityでスクリプトを作成する手順とコードの内容を詳しく説明します。


① スクリプトを作成する

  1. プロジェクトウィンドウで空白の場所を右クリック
  2. **「Create」→「C# Script」**を選択します。
  3. スクリプトに**「ChangeSize」**と名前を付けます。
    • 作成したスクリプトは、プロジェクトウィンドウに保存されます。

② スクリプトを記述する

作成したChangeSizeスクリプトをダブルクリックして開き、以下のコードをコピーして貼り付けます。

using UnityEngine;

public class ChangeSize : MonoBehaviour
{
    public GameObject prefab; // 生成するプレハブ
    private int count; // クリックの回数をカウントする変数

    void Start()
    {
        count = 0; // 初期値を0に設定
    }

    void Update()
    {
        // マウスの左クリックを検知
        if (Input.GetMouseButtonDown(0))
        {
            // マウス位置を取得し、カメラからの距離を設定
            Vector3 mousePosition = Input.mousePosition;
            mousePosition.z = 10.0f;

            // プレハブを生成
            GameObject obj = Instantiate(prefab, Camera.main.ScreenToWorldPoint(mousePosition), Quaternion.identity);

            // サイズを変更
            count++;
            if (count == 1)
            {
                obj.transform.localScale = new Vector3(0.3f, 0.3f, 0.3f); // 小さいサイズ
            }
            else if (count == 2)
            {
                obj.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f); // 通常サイズ
            }
            else if (count == 3)
            {
                obj.transform.localScale = new Vector3(2.0f, 2.0f, 2.0f); // 大きいサイズ
                count = 0; // カウントをリセット
            }
        }
    }
}

③ スクリプトの内容を解説

  • public GameObject prefab;
    生成するオブジェクト(球体のプレハブ)を設定するためのフィールドです。インスペクターから設定します。
  • void Start()
    初期化処理を行います。ここでは、countを0に設定しています。
  • void Update()
    毎フレーム呼び出される関数です。マウスの左クリックを検知し、クリックごとにプレハブを生成してサイズを変えます。
  • Instantiate()
    指定された位置と回転でプレハブを生成します。
  • transform.localScale
    生成されたオブジェクトのサイズを変更するために使用します。

これでスクリプトが完成しました!次は、このスクリプトをUnity上で動作させるための設定を行います。



3. スクリプトをアタッチ

作成したスクリプトをUnityで正しく動作させるために、オブジェクトへのアタッチやプレハブの設定を行います。


① 空のオブジェクトを作成

  1. ヒエラルキーウィンドウを右クリック
  2. **「Create Empty」**を選択します。
    • 空のオブジェクトが作成されます。
  3. 名前をわかりやすくするために「BallSpawner」に変更しましょう。

② スクリプトをアタッチ

  1. 作成した空のオブジェクト「BallSpawner」を選択。
  2. プロジェクトウィンドウで作成した**ChangeSizeスクリプト**をドラッグ&ドロップして、BallSpawnerにアタッチします。
    • アタッチされたことを確認するには、インスペクターウィンドウをチェックします。

③ プレハブを設定

  1. インスペクターウィンドウで、ChangeSizeスクリプトの「Prefab」フィールドが表示されています。
  2. プロジェクトウィンドウで作成したSphereプレハブを、この「Prefab」フィールドにドラッグ&ドロップします。

これで、スクリプトのアタッチと設定が完了しました!次は実際にUnityでプレイモードに切り替えて動作確認をしてみましょう。



4. 実行して確認

スクリプトをアタッチし、プレハブを設定したら、いよいよUnityで動作確認を行いましょう!以下の手順で、作成した機能が正しく動作するかチェックします。


① プレイモードに切り替える

  1. Unityエディター右上の「▶」ボタン(再生ボタン)をクリックします。
    • これでプレイモードに入ります。

② クリックして球体を生成

  1. シーン内の任意の位置をマウスの左クリックします。
    • 球体(Sphere)がクリックした位置に生成されます。
  2. さらにクリックして、球体のサイズが変わることを確認します。
    • 1回目のクリック:小さいサイズ(0.3, 0.3, 0.3)。
    • 2回目のクリック:通常サイズ(1.0, 1.0, 1.0)。
    • 3回目のクリック:大きいサイズ(2.0, 2.0, 2.0)。
    • 4回目のクリック:サイズがリセットされ、小さいサイズから再スタート。

③ 正常に動作しない場合の確認

もし動作しない場合、以下をチェックしてください:

  1. Prefabが設定されているか確認
    • BallSpawnerオブジェクトのインスペクターでPrefabフィールドにSphereプレハブが設定されているかを確認。
  2. スクリプトが正しくアタッチされているか確認
    • BallSpawnerオブジェクトにChangeSizeスクリプトがアタッチされているか確認。
  3. エラーの確認
    • Unityエディター下部のコンソールウィンドウでエラーメッセージが表示されていないか確認してください。

④ プレイモードを終了する

動作確認が終わったら、もう一度「▶」ボタンをクリックしてプレイモードを終了します。


これで、クリックするたびに球体を生成し、大きさが変わる機能の動作確認が完了です!すべてがうまくいったら、おめでとうございます!Unityでの開発スキルがまた一歩レベルアップしましたね。



よくある質問(Q&A)

Q
球体が生成されないのですが?
A

スクリプトが正しくアタッチされているか、Prefabフィールドに球体プレハブを設定しているか確認してください。

Q
サイズが変わらないのですが?
A

スクリプト内のcountの値をリセットする処理を確認してください。

Q
プレハブの作成方法がわかりません。
A

ヒエラルキーウィンドウから作成したオブジェクトをプロジェクトウィンドウにドラッグ&ドロップしてください。