CrossHair.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. using System;
  2. using UnityEngine;
  3. namespace WildAttack
  4. {
  5. /// <summary>
  6. /// 准星ui
  7. /// </summary>
  8. public class CrossHair : MonoBehaviour
  9. {
  10. #region Members
  11. public static CrossHair instance;
  12. /// <summary>
  13. /// 瞄准器,基于其位置发射射线,射线的hitpoint转屏幕坐标,该坐标即准心坐标
  14. /// </summary>
  15. public Transform aimTransform;
  16. /// <summary>
  17. /// 是否限制瞄准器在屏幕范围内
  18. /// </summary>
  19. public bool limitAimInScrren;
  20. public RectTransform _rectTransform;
  21. private RectTransform _canvasRectTransform;
  22. #endregion
  23. #region Lifecycle
  24. void Awake()
  25. {
  26. instance = this;
  27. _rectTransform = GetComponent<RectTransform>();
  28. _canvasRectTransform = GetComponentInParent<Canvas>().GetComponent<RectTransform>();
  29. }
  30. public void LateUpdate()
  31. {
  32. UpdateCrossHairPosition(GameMananger.GetInstance().hitPoint);
  33. // 不同射击模式
  34. //ShootTypeEnum type = GameMananger.GetInstance().GetShootType();
  35. //if ( type == ShootTypeEnum.FixedScreen ) {
  36. // //if (limitAimInScrren) aimTransform.eulerAngles = LimitAngles(aimTransform.eulerAngles);
  37. // hitPoint = CrossHairTransRaycast();
  38. // UpdateCrossHairPosition(hitPoint);
  39. //}
  40. //else if ( type == ShootTypeEnum.FixedCrossHair ) {
  41. // Camera.main.transform.LookAt(CrossHairTransRaycast());
  42. //}
  43. //else if ( type == ShootTypeEnum.moreScreen ) {
  44. // hitPoint = CrossHairTransRaycast();
  45. // UpdateCrossHairPosition(hitPoint);
  46. // CheckCrossHair();
  47. //}
  48. }
  49. #endregion
  50. #region Functions
  51. public void UpdateCrossHairPosition(Vector3 hitPoint)
  52. {
  53. Vector2 viewPoint = Camera.main.WorldToViewportPoint(hitPoint);
  54. _rectTransform.localPosition = (viewPoint - Vector2.one * 0.5f) * _canvasRectTransform.rect.size;
  55. }
  56. public void ResetCrossHair()
  57. {
  58. _rectTransform.anchoredPosition = new Vector2(_canvasRectTransform.rect.width / 2, _canvasRectTransform.rect.height / 2);
  59. }
  60. #endregion
  61. }
  62. }