簡単なアイテム欄(インベントリ)の実装Part1【Unityゲーム制作】

今回はUnityの2Dゲームで簡単なアイテム欄(インベントリ)を実装していきます。

インベントリはゲームによって機能が大きく異なり、その機能によって実装方法が大きく異なります。今回は「かなりシンプルな仕組みで実装」のPart1です。

はじめに

Unityのインストール方法・日本語化は下記から。

Unityのヴァージョン

今回使用するのは「Unity 2020.3.21f1」ヴァージョン。2Dテンプレートで作成しています。

事前準備として、2Dキャラクターの移動が実装済みの段階です。

今回やる事

アイテム欄は「画面に常に表示」している状態、「アイテムを取得したらアイテム欄に移動する」というものすごく簡単な感じです。まずはアイテムを移動するところまでを実装。

実装開始

では、実際に実装していきます。

アイテム欄の設置

まずはアイテム欄を作成。ヒエラルキーで右クリック、UI→画像を追加。

Canvasが追加されるのでレンダーモードを変更。

追加した画像の名前を「ItemSet」に変更、位置も変えます。画面下の白四角がアイテム欄です。

アイテム作成

同じくUI→画像を追加して、名前をCapuleItemにします。

位置やソース画像、色を変更しておきます。下記の赤いカプセルがアイテムです。

CapsuleItemの「コンポーネントを追加」から「CapsuleColider2D」、新規スクリプトで「ItemGet」を追加。コライダーはトリガーにするにチェックを入れます。

「Player」に新規スクリプトで「ItemInventory」を追加。

スクリプトの作成

ItemInventoryのスクリプトは下記の様に変更。

アイテム欄を利用できるようにしている感じですね。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ItemInventory : MonoBehaviour
{
    public GameObject ItemSlot;

    public static ItemInventory instance { get; private set; }

    private void Awake()
    {
        instance = this;
    }
}

ItemGetのスクリプトは下記の様に変更。

アイテムにプレイヤーがぶつかったらアイテムを移動するって感じですね。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ItemGet : MonoBehaviour
{
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("Player"))
        {
            transform.position = ItemInventory.instance.ItemSlot.transform.position;
        }
    }
}

最後に、Playerにタグをつけて、ItemSlotにセット。

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

とりあえず「アイテムを拾う」部分まで。

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