Project_WL/Assets/Script/HUD/HUDBase.cs

87 lines
2.3 KiB
C#
Raw Normal View History

2024-12-15 01:39:39 +00:00
using UnityEngine;
public class HUDBase : MyCoroutine
{
protected RectTransform m_RectTransform, m_CanvasRect;
protected Transform m_Target;
protected Camera m_Camera;
2025-03-05 03:47:01 +00:00
protected float OffTime;
2025-04-03 23:12:48 +00:00
protected bool isUpdate = true;
2025-03-05 03:47:01 +00:00
2025-03-05 02:50:34 +00:00
bool isRect = false, isCanvasRect = false, isMainCam = false, isTarget = false;
2024-12-15 01:39:39 +00:00
void Init()
{
if (!isRect)
{
m_RectTransform = GetComponent<RectTransform>();
2025-03-05 02:50:34 +00:00
isRect = m_RectTransform;
}
if (!isCanvasRect)
{
m_CanvasRect = GetComponentInParent<Canvas>().GetComponent<RectTransform>();
2025-03-05 02:50:34 +00:00
isCanvasRect = m_CanvasRect;
}
if (!isMainCam)
{
m_Camera = Camera.main;
2025-03-05 02:50:34 +00:00
isMainCam = m_Camera;
}
2024-12-15 01:39:39 +00:00
}
public void Set_Target(Transform _target)
{
Init();
m_Target = _target;
2025-03-05 02:50:34 +00:00
isTarget = m_Target;
2024-12-15 01:39:39 +00:00
}
void Update()
2024-12-15 01:39:39 +00:00
{
2025-04-03 23:12:48 +00:00
if (isUpdate && isTarget && isCanvasRect && isMainCam)
Set_Pos();
2025-03-05 03:47:01 +00:00
if (OffTime > 0f)
{
OffTime -= Time.deltaTime;
if (OffTime <= 0f)
Off(false);
}
2024-12-15 01:39:39 +00:00
}
2025-04-03 23:12:48 +00:00
protected void Set_Pos()
{
Vector2 ViewportPosition = m_Camera.WorldToViewportPoint(m_Target.position);
Vector2 WorldObject_ScreenPosition = new Vector2(
(ViewportPosition.x * m_CanvasRect.sizeDelta.x) - (m_CanvasRect.sizeDelta.x * 0.5f),
(ViewportPosition.y * m_CanvasRect.sizeDelta.y) - (m_CanvasRect.sizeDelta.y * 0.5f) - 15f);
m_RectTransform.anchoredPosition = WorldObject_ScreenPosition;
}
2024-12-15 01:39:39 +00:00
public static string Get_TextColor(eAttackType _attacktype)
{
switch (_attacktype)
{
default:
case eAttackType.Physics:
return "<color=#FFFFFF>";
case eAttackType.Magic:
return "<color=#FF8B8B>";
case eAttackType.Pure:
return "<color=#F53B96>";
}
}
2025-03-05 03:47:01 +00:00
public void Off(bool deltarget)
2024-12-15 01:39:39 +00:00
{
gameObject.SetActive(false);
2025-03-05 03:47:01 +00:00
if (deltarget)
{
m_Target = null;
isTarget = false;
}
2024-12-15 01:39:39 +00:00
Init();
m_RectTransform.anchoredPosition = Vector3.one * 10000f; // 멀리 보내야 다음에 켜질 때 깜빡임 없어짐
}
}