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ボタンを押して実際に
アイテムをクリックすると、
アイテムボックスに左詰で
クリックしたアイテムが
表示されていきます。
これで今回の目標は達成です!
参考画像