[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回『アイテムの取得』後編』