UIFollow.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class UIFollow : MonoBehaviour
  5. {
  6. public float dis;
  7. public float angle;
  8. public Vector3 pos;
  9. void Start()
  10. {
  11. // pos = new Vector3(OpenXRCamera.Instance.transform.position.x, 1.5f,OpenXRCamera.Instance.head.transform.position.z + (OpenXRCamera.Instance.transform.forward * 1.5f).z);
  12. pos = HeadBtnManager.Instance.transform.position;
  13. Show(pos);
  14. }
  15. private void Awake()
  16. {
  17. HeadBtnManager.Instance.uiFollow = this;
  18. }
  19. // Update is called once per frame
  20. void Update()
  21. {
  22. dis = Vector3.Distance(new Vector3(OpenXRCamera.Instance.head.transform.position.x, 0,OpenXRCamera.Instance.head.transform.position.z), new Vector3(transform.position.x, 0, transform.position.z));
  23. angle = Vector3.Angle(OpenXRCamera.Instance.head.GetComponent<Camera>().transform .forward, transform.position - OpenXRCamera.Instance.head.transform.position);
  24. // Debug.Log("UIFollow DIS " + dis + " OpenXRCamera "+OpenXRCamera.Instance.transform.position+" This "+transform.position);
  25. if(dis>3||(dis>2.5f&&angle>100))
  26. {
  27. Hide();
  28. //
  29. }
  30. }
  31. // 隐藏
  32. public void Hide()
  33. {
  34. gameObject.SetActive(false);
  35. HeadBtnManager.Instance.ShowResetBtn(ScenesManager.SceneType.ShowDH, this);
  36. }
  37. // 显示
  38. public void Show( Vector3 pos )
  39. {
  40. transform.position = pos;
  41. transform.eulerAngles = new Vector3(0,OpenXRCamera.Instance.head.transform.eulerAngles.y, 0);
  42. gameObject.SetActive(true);
  43. }
  44. }