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

2021年4月28日

前回のチュートリアル

前回のチュートリアルではアイテムの設置に関してやりました。

まだ読んでいない方はこちらからどうぞ『玉転がしの作り方 第12回『アイテムの設置』

今回やること

今回のチュートリアルではアイテムの取得に関してやっていきます。

アイテム取得の手順

具体的なやることとしては、

1.アイテムを制御するスクリプトの作成、追加
2.OnTriggerEnter(接触時に呼ばれる)を追加
3.Itemの接触判定の設定
4.玉に当たった時だけ呼ばれるようにする
5.玉と当たったらアイテムを削除
6.アイテムの整理


今回の前編では3.『Itemの接触判定の設定』までやっていこうと思います。

それでは早速始めていきましょう!

アイテムを制御するスクリプトの作成、追加

今まで、玉やカメラを制御するためにスクリプトを作って追加してきましたよね。

アイテムに関しても同じで、スクリプトで制御していきます。

ですので、まずはスクリプトを作成しましょう!

スクリプトの作成

ProjectビューからCreate>C#Scriptで作成できます。

名前は『ItemManager』としましょう。

スクリプトの追加

作成した『ItemManager』スクリプトをPrefabのItemに追加しましょう。

Prefabの』というところがポイントです。

やり方は『ItemManager』スクリプトをPrefabのItemにドラッグ&ドロップするだけです。

PrefabのItemを確認するとコンポーネントにItemManagerスクリプトが追加されています。

Prefabすごい!

Prefabが優れている点は、Prefabを変更するとPrefabを作って作られたオブジェクトも同じように変更される点です。

今回だとItemManagerスクリプトが追加されているはずです。

実際にそうなっているか確認してみましょう。

少し見えにくいですが、ちゃんと追加されていますね!

OnTriggerEnter(接触時に呼ばれる)を追加

スクリプトにOnTriggerEnter関数という接触時に呼ばれる処理を書いていきます。

ItemMangerスクリプトをダブルクリックして編集していきましょう。

今回のコード内容は下記の通りです。

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)
    {
      //当たった時の処理を記述
    }
}

OnTriggerEnter関数の中の記述はぶつかった時に呼ばれます。

今回書き込んでいるスクリプトはアイテムに追加されているので、アイテムが何かとぶつかった時に呼ばれます。

Itemの接触判定の設定

オブジェクトは初期設定だとぶつかった時に跳ね返してしまいます。

このままの設定では、玉がアイテムにぶつかった時に跳ね返してしますでしょう。

アイテムを取得するたびに跳ね返していたのではゲーム性に少し問題があるので、ぶつからないように設定していきます。

設定の仕方は簡単で、PrefabのItemを選択した状態でBoxColliderの『Is Trigger』にチェックを入れるだけです。

Prefabに変更を加えたので、Prefabを使って作られたオブジェクトも変更されます。

当たり判定を詳しく知りたい方はこちらの記事をどうぞ『【unity入門】当たり判定についてのまとめ

まとめ

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

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


を行いました。

次にやること

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

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

を行なっていきます。

次回のチュートリアル

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