using UnityEngine; public class HUDBase : MyCoroutine { protected RectTransform m_RectTransform, m_CanvasRect; protected Transform m_Target; protected Camera m_Camera; void Init() { if (m_RectTransform == null) m_RectTransform = GetComponent(); if (m_CanvasRect == null) m_CanvasRect = GetComponentInParent().GetComponent(); if (m_Camera == null) m_Camera = Camera.main; } public void Set_Target(Transform _target) { Init(); m_Target = _target; } protected override void Update() { if (m_Target && m_CanvasRect && m_Camera) { RectTransform CanvasRect = m_CanvasRect; Vector2 ViewportPosition = m_Camera.WorldToViewportPoint(m_Target.position); Vector2 WorldObject_ScreenPosition = new Vector2((ViewportPosition.x * CanvasRect.sizeDelta.x) - (CanvasRect.sizeDelta.x * 0.5f), (ViewportPosition.y * CanvasRect.sizeDelta.y) - (CanvasRect.sizeDelta.y * 0.5f) - 15f); m_RectTransform.anchoredPosition = WorldObject_ScreenPosition; } } public static string Get_TextColor(eAttackType _attacktype) { switch (_attacktype) { default: case eAttackType.Physics: return ""; case eAttackType.Magic: return ""; case eAttackType.Pure: return ""; } } public void Off() { gameObject.SetActive(false); Init(); m_RectTransform.anchoredPosition = Vector3.one * 10000f; // 멀리 보내야 다음에 켜질 때 깜빡임 없어짐 } }