説明
今回は、「A」ボタンを押したときに、CanvasをON, OFF します。(表示・非表示)
ONの場合に、Canvasの位置をカメラの目の前(カメラを基準として、一定の位置)にします。
(※常にカメラに追従するわけではありません。追従したい場合は。MainCameraの子オブジェクトにCanvasを設置すればOKです。)
環境
Unity 20194.8f1
実装
①. シーンにCanvasを設置し、Render Modeを「World Space」にする
②. Canvasの子オブジェクトに好きなように、PanelやTextを用意する。Canvasを非表示の状態から始めたいので、Canvasのゲームオブジェクトをはずす。
③. CanvasManagerという空のオブジェクトをシーンに配置し、以下のスクリプトをAdd Componentする
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CanvasManager : MonoBehaviour { public GameObject Camera; public GameObject Canvas; private bool pushFlag = false; // ボタン押しすぎない用 public bool check = true; // 条件分岐用のbool変数 // Update is called once per frame void Update() { // Aボタンで開く if (Input.GetKey(KeyCode.A)) { if (pushFlag == false) { pushFlag = true; if (!check) { // 非表示 Canvas.SetActive(false); check = true; } else { // 表示 Canvas.SetActive(true); if(Camera) { Canvas.transform.position = Camera.transform.position + Camera.transform.forward * 3.0f; Quaternion CameraRot = Camera.transform.rotation; CameraRot.x = 0f; // Canvasが斜めにならないように調整 CameraRot.z = 0f; // Canvasが斜めにならないように調整 Canvas.transform.rotation = CameraRot; check = false; } } } } else { pushFlag = false; } } }
④. CanvasManagerのインスペクターから、上記のスクリプトに、「Main Camera」と「Canvas」を設置します。

実行
こんな感じです。わかりづらいですが、下記の画像の「Camera Preview」を見ていただければ、どこに移動しても、まったく同じように表示されているのがわかります。

※Y軸回転にも対応しております。
コメント