LoginSignup
0
0

More than 1 year has passed since last update.

【備忘録】①アイテム、アイテムボックスの実装【3D脱出ゲーム制作】

Posted at

【内容】
・オブジェクトのクリック判定実装
・アイテムの実装
・アイテムボックスの実装

【オブジェクトのクリック判定実装】
今回、クリックしたらアイテムボックスへ取得されるアイテムの実装を行う。
上記アイテムを実装するには、以下のものが必要

①Event Trigger
・ヒエラルキーに追加したアイテム内にコンポーネントとして追加するもの
・追加したアイテムに対して、どのような動作をするか設定できる

②Physics Raycaster
・メインカメラにコンポーネントとして追加
・アイテムに対してレーザー的なものを当てて、判定するもの

③Event System
・ヒエラルキーにUIから追加するもの
・とりあえず必要なものと認識 要調査

④クリック判定のスクリプト(ヒエラルキーのアイテムにそれぞれD&Dで追加)
・今回は、クリックをしたらアイテムボックスへ格納されるというスクリプトを作成(以下)
・下記スクリプトにより、クリックしたら後述する「Item.cs」と「ItemBox.cs」を動作させる形で記載

PickUpObj.cs
public class PickUpObj : MonoBehaviour
{
    [SerializeField] Item.Type item;
    //クリックしたら消す
    public void OnClickObj() 
    {
        /*クリックされたらItemBox.csが動作、
      アイテムが消え、ItemBoxへ格納される動きになる*/
        ItemBox.instance.SetItem(item);
        gameObject.SetActive(false);
    }
}

【アイテムの実装】
①アイテムの列挙スクリプト
・アイテム自体は、あくまでプレイヤーが手に入れた「情報」として保持すればよいので、
  MonoBehaviourは不要

Item.cs
public class Item
{
    //列挙型:種類を列挙
    public enum Type 
    {
        Cube,
        Ball,
    }

}

【アイテムボックスの実装】
①パネル
・ヒエラルキーにUIから追加
・コンポーネントHorizontal Layout Groupを追加(のちに追加する枠の位置関係をこれで調整)

②アイテムが表示される枠
・ヒエラルキーにUIからイメージを追加

③ItemBoxのスクリプト

ItemBox.cs
public class ItemBox : MonoBehaviour
{
    //ItemBoxをOnClickObjで実行するためにstaticなインスタンス
    public static ItemBox instance;
    private void Awake()
    {
        if (instance == null) 
        {
            instance = this;
        }
    }

    /*PickUpObjがクリックされたら、スロットにアイテムを入れる
  public static ItemBox instanceでどこからでも引っ張れる
    PickUpObj.csへ持っていける*/
    public void SetItem(Item.Type type) 
    {
        Debug.Log(type);
    }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0