完成イメージ
細かい仕様
・近づくと詳細を拡大し、離れると非表示
・ボタンを入力したらtetxの部分に現在入力している数字が表示される
・正しい数字を入力するとドアが破壊(動かすだけも可能)
実装手順
1.オブジェクトを用意(今回は画像にあるような無料のモデル)
2.1にコライダーを付け、isTriggerにチェックを付け、次のコードを実装
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);
}
}
3.1で用意したオブジェクトと"同じ階層"にキャンバスを作成
EnptyObject
--モデル
--CAnvas
のような形
4.キャンバスにPAnelを置き、画像のようにボタンを並べる。
これを上記のPanel_1に指定。
5.キャンバスに以下のコードを実装する
using UnityEngine;
using UnityEngine.UI;
public class PasswordEntry : MonoBehaviour
{
public string correctPassword = "1234"; // 正しいパスワードを設定
public Text displayText; // 入力された文字列を表示するText
public GameObject door; // 扉のGameObject
private string inputPassword = ""; // 入力中のパスワード
public void AppendNumber(string number)
{
inputPassword += number;
displayText.text = inputPassword;
}
public void CheckPassword()
{
if (inputPassword == correctPassword)
{
// 正しいパスワードが入力された時の処理
door.SetActive(false); // 扉を非アクティブにする
}
else
{
// パスワードが間違っていた時の処理
}
inputPassword = ""; // 入力中のパスワードをリセット
displayText.text = inputPassword;
}
}
数字ボタンをクリックした時は AppendNumber 関数を呼び出し、Enterボタンをクリックした時は CheckPassword 関数を呼び出します。CheckPassword関数で入力された文字列と正しいパスワードを比較し、一致した場合は扉のGameObjectを非アクティブにしています。
完成
以上でplayerが近づくと入力パネルが出現し、正しい数字を入力するとドアが開くようなシステムが完成しました。