Unity|簡単なアイテム欄(インベントリ)の実装-アイテムを収納-

今回は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

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

タイトルとURLをコピーしました