完成イメージ
実装
近づく判定→OnTriggerStay(Collider other)
離れる判定→void OnTriggerExit(Collider other)
を使って実装していきます。
これらはcolliderが反応している間だけ実行を行ってくれる関数です。
1.鍵の方にplayerを判定するためのcolliderをセット
2.playerのtagを"Player"へ変更
3.鍵の子オブジェクトにパネルを非アクティブ状態で作成。
4.パネルにボタンをセット。
5.以下のコードを鍵側へ実装し、Panelに表示したいパネルをセット。
public GameObject Panel_1;
public GameObject Key;
void OnTriggerStay(Collider other)
{
if (other.CompareTag("Player"))
{
//プレイヤーが圏内にいるときの処理
//ボタン等を設置したPanelを表示させる。
Panel_1.SetActive(true);
}
}
void OnTriggerExit(Collider other)
{
if (other.CompareTag("Player"))
{
//プレイヤーが圏内から出た時の処理
//Panelを非表示にする。
Panel_1.SetActive(false);
}
}
public void GetKey()
{
Destroy(Key);
}
今回は後に取得したアイテムを破壊したかったためGetKey関数を設定しています。
割り当てられたGameObject(今回はKey)を破壊するための関数です。
完成
これで近づいたらボタン表示がされるようなシステムの完成です。
Player側に空のオブジェクトを作り、そこにアイテムとのcolliderの判定を実装もしてみましたがこちらはなぜかうまくいきませんでした。とりあえず現時点で不都合はないのでこれで良しとします。