VR上にある楽器オブジェクトの名前をポップアップさせるスクリプトを作ろうと思っています。
https://rightcode.co.jp/blog/information-technology/unity-display-text-in-vr-environment
上記のURLのサイトの(方法3)を参考にして、視線の当たるオブジェクトを自分の楽器オブジェクトに変更しています。
複数ある楽器オブジェクトを空のオブジェクト(Violins1)に入れて、群で1つのオブジェクトにしています。
名前をポップアップしたいのは群の名前なので、群のオブジェクト(Violins1)にCapsuleColliderを付けました。
そして、下記のスクリプトで実行しましたが、テキストは表示されませんでした。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5 6public class DisplayPopup : MonoBehaviour 7{ 8 public GameObject Violins1; //変更箇所 9 public GameObject popupObj; 10 public Transform popup; 11 12 private Text infoText; 13 // Start is called before the first frame update 14 void Start() 15 { 16 if (popup != null) 17 { 18 infoText = popup.Find("Text").GetComponent<Text>(); 19 } 20 } 21 22 // Update is called once per frame 23 void Update() 24 { 25 Transform camera = Camera.main.transform; 26 Ray ray; 27 RaycastHit[] hits; 28 GameObject hitObject; 29 30 ray = new Ray(camera.position, camera.rotation * Vector3.forward); 31 hits = Physics.RaycastAll(ray); 32 33 for (int i = 0; i < hits.Length; i++) 34 { 35 RaycastHit hit = hits[i]; 36 hitObject = hit.collider.gameObject; 37 if (hitObject == Violins1) //変更箇所 38 { 39 popupObj.SetActive(true); 40 if (popup != null) 41 { 42 popup.LookAt(camera.position); 43 popup.Rotate(0.0f, 180.0f, 0.0f); 44 } 45 transform.position = hit.point; 46 } 47 else 48 { 49 popupObj.SetActive(false); 50 } 51 } 52 } 53}
参考サイトのとおりに、Capsuleオブジェクトでやったところ、うまくいきました。
Colliderがないと視線のあたり判定ができないのかなと思いCapsuleColliderを入れましたが、
それだけだとだめなのでしょうか?
また、さらにスクリプトの内容を変えないとだめなのでしょうか?
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/21 11:05