Unityで3D脱出ゲーム

Unity 3D脱出ゲームの作り方その4:アイテムボックスに左詰で入れる方法

2020年12月7日

Unityで作る3D脱出ゲームの作り方を
紹介している記事その4です。

僕が所属しているオンラインサロンの
先生である嶋津さんが作成された動画を
見ながら勉強した内容について、

3D脱出ゲームの作り方

としてまとめている記事になります。


その4となるこの記事では、

アイテムボックスに左詰でアイテムを入れる方法

についてお伝えしています。


参考となる動画はこちらです。

【Unity3D】脱出ゲームの作り方 #4アイテムボックスに左詰でいれる

また、Udemyの場合は、
セクション4の38

「アイテムの左につめる実装」

についての内容となります。

スポンサーリンク

この動画で勉強すること

▶︎アイテムボックスに取得したアイテムを左詰で入れる。

目標1

Slotスクリプトを編集して、
アイテムスロットが空いているかの
判断をできるようにする。

目標2

ItemBoxスクリプトを編集して
アイテムスロットが空いていれば
左詰で取得したアイテムを入れていく処理を作る。

Slotスクリプトのコード

今回編集したSlotスクリプトは
以下となりました。

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

public class Slot : MonoBehaviour
{
    Item item = default;
    Image image = default;

    private void Awake()
    {
        image = GetComponent<Image>(); //imageにImageコンポーネントを入れる
    }

    //空かどうかの判断をする関数
    public bool IsEmpty()
    {
        if(item == null)
        {
            return true;
        }
        return false;
    }


    public void SetItem(Item item)
    {
        this.item = item;
        UpdateImage(item);
    }

    // アイテムを受け取ったら画像をスロットに表示してやる
    void UpdateImage(Item item)
    {
        image.sprite = item.sprite; //Slotのimageにクリックしたアイテムのspriteを入れる
    }
}

ItemBoxスクリプトのコード

今回編集したItemBoxスクリプトの
コードは以下となります。

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

public class ItemBox : MonoBehaviour
{

    // やりたいこと:
    // Slotが空いていたら、左から入れていく


    [SerializeField] Slot[] slots = default;
    // どこでも実行できるやつ
    public static ItemBox instance;
    private void Awake()
    {
        if(instance == null)
        {
            instance = this;
        }
    }

    // PickupObjがクリックされたら、スロットにアイテムをいれる
    public void SetItem(Item item)
    {
        foreach(Slot slot in slots) // slotsの数だけ繰り返す
        {
            if (slot.IsEmpty()) //slotがもし空だった場合
            {
                slot.SetItem(item); //slotにアイテムを入れる
                break;              //空のスロットにアイテムを入れたら繰り返しを止める
            }
        }
    }
}

今回の動画で勉強したことのまとめ

3D脱出ゲームの作り方その4で
勉強した内容についてのまとめです。

・アイテムボックスに左詰で
 アイテムを入れるには、
 Slotが空かどうかを調べる必要がある。

 そのため、Slotスクリプトに
 Slotが空いているか調べる
 処理を行うコードを書く。

・次にItmeBoxスクリプトの
 編集をして、もしSlotが空だったら
 アイテムを入れるという処理を行う
 コードを書く。

今回の内容を実践してから
Playボタンを押して実際に
アイテムをクリックすると、

アイテムボックスに左詰で
クリックしたアイテムが
表示されていきます。

これで今回の目標は達成です!

参考画像

アイテムが左詰でボックスに表示される画像

スポンサーリンク

-Unityで3D脱出ゲーム