[unity3d日本語チュートリアル]玉転がしの作り方 第14回『アイテムの取得』中編

前回のチュートリアル

前回のチュートリアルでは、

1.アイテムを制御するスクリプトの作成、追加
2.OnTriggerEnter(接触時に呼ばれる)を追加
3.Itemの接触判定の設定

を行いました。

まだ読んでいない方はこちらからどうぞ『玉転がしの作り方 第13回『アイテムの取得』前編

今回やること

今回のチュートリアルでは、引き続きアイテムの取得を行なっていきます。

具体的にやることは、

4.玉に当たった時だけ呼ばれるようにする

それでは早速やっていきましょう!

玉に当たった時だけ呼ばれるようにする

現在『ItemManager』スクリプトに記述されているOnTriggerEnter関数はアイテムに何か当たった時に呼ばれます。

玉以外に当たった時にも呼ばれてしまいますので、念の為玉が当たった時だけ呼ばれるようにしましょう。

やり方としては玉に『Player』というタグを付けて、アイテムがタグの付いているオブジェクトと当たった場合のみOnTriggerEnter関数が呼ばれるようにします。

ですので、まずは玉に『Player』というタグを付けます。

タグの作成

Sphereを選択した状態で、InspectorのTagの横にあるUntaggedをクリックしてください。

次に自分で『Player』という名前のタグを設定するので、『AddTag』という項目をクリックしてください。

タグの設定画面が出てきますので、『+』を押して新しくタグを追加しましょう。

タグの名前を入力できる画面出てきますので、『Player』と入力してください。

入力できたら『Save』ボタンを押します。

これで『Player』という名前のタグが作成できました。

タグの適応

先ほどと同じようにSphereを選択した状態で、InspectorのTagの横にあるUntaggedをクリックしてください。

すると作成した『Player』というタグがあります。

これを選択しましょう。

これで玉オブジェクトに『Player』というタグが適応されました。

コードを書く

玉オブジェクトに『Player』というタグが付けられました。

ItemManagerスクリプトに『Player』タグが付いたオブジェクトが当たった時だけOnTriggerEnter関数が呼ばれるようにしていきましょう。

コード内容は、

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

public class ItemManager : MonoBehaviour {

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		
	}
    
    void OnTriggerEnter(Collider hit)
    {
        //今回追加
        if (hit.CompareTag("Player"))
        {
            //処理を記述
        }
    }
}

簡単にコードの解説をしておきましょう。

OnTriggerEnter関数の引数にはCollider型の変数 hitが入ります。

hitにはぶつかったオブジェクト、例えば玉がぶつかったのなら玉オブジェクトが入ります。

if (hit.CompareTag("Player"))
 {
   //処理を記述
 }

ではぶつかったオブジェクトのタグを判定して、もしタグが『Player』であれば処理が実行されるといったコードになります。

まとめ

今回のチュートリアルでは、アイテムが玉に当たった時だけ呼ばれるようにしました。

次回のチュートリアルでは玉が当たったらアイテムを削除と、アイテムの整理を行なっていきましょう。

次のチュートリアル

次のチュートリアルはこちらからどうそ『玉転がしの作り方 第15回『アイテムの取得』後編