Unity のインベントリを使用しないピック アンド ドロップ システム

このチュートリアルでは、インベントリ システムを使用せずに、Unity に単純なピック アンド ドロップ システムを作成します。このシステムにより、プレイヤーは環境からオブジェクトを拾い上げ、別の場所にドロップすることができます。

前提条件

  • Unity ハブが取り付けられています
  • Unity エディター (バージョン 2019 以降)
  • C# の基本的な知識

プロジェクトのセットアップ

  1. Unity ハブを開き、新しい Unity プロジェクトを作成します。
  2. プレイヤー キャラクターと対話するいくつかのオブジェクトを使用してシーンを設定します。

ピックアンドドロップシステムの実装

ステップ 1: ピックアップ スクリプトを作成する

using UnityEngine;

public class Pickup : MonoBehaviour
{
    private Transform heldObject;
    private Vector3 offset;

    void Update()
    {
        if (heldObject != null)
        {
            MoveHeldObject();
            CheckDrop();
        }
        else
        {
            CheckPickup();
        }
    }

    void MoveHeldObject()
    {
        Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        heldObject.position = new Vector3(mousePosition.x + offset.x, mousePosition.y + offset.y, 0);
    }

    void CheckPickup()
    {
        if (Input.GetMouseButtonDown(0))
        {
            RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
            if (hit.collider != null && hit.collider.CompareTag("Pickup"))
            {
                heldObject = hit.transform;
                offset = heldObject.position - Camera.main.ScreenToWorldPoint(Input.mousePosition);
            }
        }
    }

    void CheckDrop()
    {
        if (Input.GetMouseButtonDown(1))
        {
            heldObject = null;
        }
    }
}

ステップ 2: ピックアップ オブジェクトにタグを追加する

プレイヤーが拾えるようにしたいオブジェクトに "Pickup" タグを付けます。

  1. シーン内のオブジェクトを選択します。
  2. 「インスペクター」ウィンドウで、「"Tag"」ドロップダウンをクリックします。
  3. "Add Tag" を選択し、"Pickup" を入力します。
  4. タグをオブジェクトに適用します。

ステップ 3: システムのテスト

  1. "Pickup" タグを持ついくつかのオブジェクトをシーンに追加します。
  2. Unity でシーンを再生します。
  3. タグ付けされたオブジェクトをクリックして選択します。
  4. 右クリックして保持しているオブジェクトをドロップします。

結論

Unity でインベントリを使用せずに、単純なピック アンド ドロップ システムを正常に実装できました。このシステムを使用すると、プレーヤーはシーン内のオブジェクトを拾い上げたり、さまざまな場所にドロップしたりすることでオブジェクトを操作できます。オブジェクト スナップ、オブジェクトの回転、またはより複雑なインタラクションなどの機能を追加して、このシステムを自由に拡張できます。

おすすめの記事
Unity で UI ドラッグ アンド ドロップを使用した簡単な在庫システムをコーディングする
Unity でのランタイム アニメーター コントローラーの使用
Unityでパズルゲームを作る
Unity でビデオ ファイルを再生する方法
Unityで手振れ効果を作成する
Unityでスナイパースコープエフェクトを追加する方法
Unity でカットシーンをトリガーする方法