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

Unityで生成するPrefabの大きさをスライダーで調整しよう

Unity

はじめに

Unityを使ってゲーム開発を行う際、プレイヤーの操作によってオブジェクトを生成し、さらにそのサイズを動的に調整できる機能は、インタラクティブなゲーム体験を提供する上で非常に重要です。この記事では、Unityでマウスの左クリック操作によってPrefab(プレハブ)を生成し、UIスライダーを使用してそのサイズを調整する方法を初心者にもわかりやすく解説します。

ステップ1: Prefabの準備

まず、Unityエディタ内で使用したいオブジェクトを作成し、それをPrefabとして保存します。例えば、シンプルな立方体を作成してみましょう。

  1. Unityエディタを開き、シーンに新しい3Dオブジェクトとして「Cube」を追加します。
  2. この立方体を選択し、Inspectorウィンドウで適当な名前(例えば”MyCube”)を設定します。
  3. プロジェクトパネル内の適当な場所で右クリックし、「Create」>「Prefab」を選択し、新しいPrefabを作成します。
  4. 作成したCubeオブジェクトを新しいPrefabにドラッグ&ドロップして、Prefabを完成させます。

ステップ2: スライダーの設定

次に、UIスライダーをシーンに追加し、これを使用してPrefabのサイズを調整できるようにします。

  1. 「GameObject」>「UI」>「Slider」を選択して、UIスライダーをシーンに追加します。
  2. Canvasオブジェクトの下にスライダーが追加されます。スライダーの位置やサイズは、Inspectorウィンドウで調整できます。

ステップ3: 左クリックでPrefabを生成する機能の追加

ここでは、マウスの左クリックによってPrefabをシーンに生成するスクリプトを作成します。

  1. 新しいC#スクリプトを作成し、名前を「SpawnWithClick」とします。
  2. 以下のようにスクリプトを編集して、左クリックでPrefabを生成する機能を追加します。
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

public class SpawnWithClick : MonoBehaviour
{
    public GameObject prefab;
    
    private Vector3 mousePosition;
    public Slider slider;

    void Start()
    {
        slider = GameObject.Find("Slider").GetComponent<Slider>();
    }

    void Update()
    {
        //Sliderをクリックする時、プレハブ生成を止める
        if (EventSystem.current.IsPointerOverGameObject())
        {
            return;
        }

        if (Input.GetMouseButtonDown(0))
        {
            float scale = slider.value;
            mousePosition = Input.mousePosition;
            mousePosition.z = 10.0f;
            GameObject obj = Instantiate(prefab, Camera.main.ScreenToWorldPoint(mousePosition), Quaternion.identity);
            obj.transform.localScale = new Vector3(scale, scale, scale);
        }
    }
}

このコードは、Unityでマウスの左クリックによってPrefabを生成し、UIスライダーを使ってそのPrefabの大きさを調整する機能を実装しています。また、UIスライダーを操作している間はPrefabの生成を停止するようにすることで、UI操作とゲーム内の操作が干渉しないように配慮しています。

  • public GameObject prefab; では、Inspectorから割り当てるPrefabを指定します。
  • public Slider slider; では、シーンにあるスライダーを指定します。Startメソッド内でスライダーのオブジェクトを名前で検索し、そのコンポーネントを取得しています。
  • Updateメソッド内では、まずEventSystem.current.IsPointerOverGameObject()を使用して、現在マウスポインタがUIオブジェクトの上にあるかどうかをチェックしています。これにより、スライダー操作中にPrefabが生成されるのを防ぎます。
  • マウスの左クリックが検出された場合、スライダーの値に基づいてPrefabの大きさを設定し、マウスの位置にPrefabを生成します。Prefabの大きさはnew Vector3(scale, scale, scale)によって、スライダーの値に応じて調整されます。

このスクリプトを利用するには、Unityエディタ内で適切なPrefabとスライダーUIを設定し、このスクリプトをゲームオブジェクトにアタッチする必要があります。

ステップ4: 実行してテスト

すべての設定が完了したら、Unityエディタでプロジェクトを実行して、左クリックでPrefabが生成されること、そしてスライダーを動かすことでそのサイズがリアルタイムで調整されることを確認します。

まとめ

この記事では、Unityでマウスの左クリック操作によってPrefabを生成し、UIスライダーを使用してそのサイズを調整する方法を紹介しました。この機能を利用することで、プレイヤーによりダイナミックなインタラクションを提供するゲームを作成することができます。Unityでの開発は想像力と創造性が試される場であり、今回紹介した技術を応用して、さらに面白い機能を開発してみてください。

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