| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- using System;
- using UnityEngine;
- namespace WildAttack
- {
- /// <summary>
- /// 准星ui
- /// </summary>
- public class CrossHair : MonoBehaviour
- {
- #region Members
- public static CrossHair instance;
- /// <summary>
- /// 瞄准器,基于其位置发射射线,射线的hitpoint转屏幕坐标,该坐标即准心坐标
- /// </summary>
- public Transform aimTransform;
- /// <summary>
- /// 是否限制瞄准器在屏幕范围内
- /// </summary>
- public bool limitAimInScrren;
- public RectTransform _rectTransform;
- private RectTransform _canvasRectTransform;
- #endregion
- #region Lifecycle
- void Awake()
- {
- instance = this;
- _rectTransform = GetComponent<RectTransform>();
- _canvasRectTransform = GetComponentInParent<Canvas>().GetComponent<RectTransform>();
- }
- public void LateUpdate()
- {
- UpdateCrossHairPosition(GameMananger.GetInstance().hitPoint);
- // 不同射击模式
- //ShootTypeEnum type = GameMananger.GetInstance().GetShootType();
- //if ( type == ShootTypeEnum.FixedScreen ) {
- // //if (limitAimInScrren) aimTransform.eulerAngles = LimitAngles(aimTransform.eulerAngles);
- // hitPoint = CrossHairTransRaycast();
- // UpdateCrossHairPosition(hitPoint);
- //}
- //else if ( type == ShootTypeEnum.FixedCrossHair ) {
- // Camera.main.transform.LookAt(CrossHairTransRaycast());
- //}
- //else if ( type == ShootTypeEnum.moreScreen ) {
- // hitPoint = CrossHairTransRaycast();
- // UpdateCrossHairPosition(hitPoint);
- // CheckCrossHair();
- //}
- }
- #endregion
- #region Functions
- public void UpdateCrossHairPosition(Vector3 hitPoint)
- {
- Vector2 viewPoint = Camera.main.WorldToViewportPoint(hitPoint);
- _rectTransform.localPosition = (viewPoint - Vector2.one * 0.5f) * _canvasRectTransform.rect.size;
- }
- public void ResetCrossHair()
- {
- _rectTransform.anchoredPosition = new Vector2(_canvasRectTransform.rect.width / 2, _canvasRectTransform.rect.height / 2);
- }
- #endregion
- }
- }
|