今回はUnity2Dゲームで簡単なアイテム欄(インベントリ)を実装していきます。
インベントリ(アイテム欄)はゲームによって機能が大きく異なり、実装方法も変わってきます。今回は「かなりシンプルな仕組みで実装」をするPart1です。
はじめに
「Unity 2022.3.14f1」バージョン、2Dテンプレートで作成しています。
事前準備として、プレイヤーの移動が実装済みの段階です。
下記のような感じですね。

今回やる事
アイテム欄は「画面に常に表示」、「アイテムを取得したらアイテム欄に移動する」というものすごく簡単な感じです。まずはアイテムをアイテム欄に移動するところまでを実装。
実装開始
簡単に画面を作成してスクリプトで実装していきます。
アイテム欄の設置
まずはアイテム欄を作成。「UI」→「Image」を追加。

Canvasが追加されるのでRenderModeを変更します。

追加したImageの名前を「ItemSet」に変更、位置と色を変更します。

アイテム作成
「2DObject」→「Sprites」→「Capsule」を追加。

位置や色を変更して、「CapsuleCollider2D」をアタッチします。

「CapsuleColider2D」のIsTriggerにチェック、新規スクリプトで「ItemGet」を追加します。

スクリプトの作成
まずは、ItemManagerのスクリプトを作成。アイテム欄を利用できるようにしている感じですね。
using UnityEngine; public class ItemManager : MonoBehaviour { public GameObject ItemSlot; public static ItemManager instance { get; private set; } private void Awake() { instance = this; } }
ItemGetのスクリプトは下記の様にします。アイテムにプレイヤーがぶつかったらアイテム欄に移動するって感じですね。
using UnityEngine; public class ItemGet : MonoBehaviour { Vector3 Pos; private void OnTriggerEnter2D(Collider2D collision) { if (collision.CompareTag("Player")) { Pos.x = ItemManager.instance.ItemSlot.transform.position.x; Pos.y = ItemManager.instance.ItemSlot.transform.position.y; Pos.z = 0; transform.position = Pos; } } }
最終調整
「CreateEmpty」で空のオブジェクトを追加して、名前をItemManagerに。ItemManagerスクリプトをアタッチしてパラメータをセットします。

最後に、Playerにタグをつけます。

実際に動かしてみて、Playerがアイテムに触れたときにアイテム欄に移動すればOK

とりあえず「アイテムを拾う」部分まで。実際にはアイテムの移動ですね。