2025-09-24 11:24:38 +05:00

70 lines
1.2 KiB
C#

using UnityEngine;
namespace TPSBR.UI
{
[RequireComponent(typeof(CanvasGroup))]
public class UIHitDirectionItem : UIBehaviour
{
// PUBLIC MEMBERS
public bool IsActive => ShowCooldown > 0f;
public float ShowCooldown { get; private set; }
public float Angle { get; private set; }
// PRIVATE MEMBERS
[SerializeField]
private float _hideTime = 0.5f;
private float _targetAlpha = 1f;
// PUBLIC METHODS
public void Show(float duration, float angle)
{
ShowCooldown = duration;
Angle = angle;
var rotation = RectTransform.localRotation.eulerAngles;
rotation.z = angle;
RectTransform.localRotation = Quaternion.Euler(rotation);
CanvasGroup.alpha = 0f;
}
// MONOBEHAVIOUR
protected void Awake()
{
_targetAlpha = CanvasGroup.alpha;
CanvasGroup.alpha = 0f;
}
protected void Update()
{
if (IsActive == false)
return;
ShowCooldown -= Time.deltaTime;
if (ShowCooldown <= 0f)
{
ShowCooldown = 0f;
CanvasGroup.alpha = 0f;
return;
}
if (ShowCooldown < _hideTime)
{
float progress = ShowCooldown / _hideTime;
CanvasGroup.alpha = Mathf.Lerp(0f, _targetAlpha, progress);
}
else
{
CanvasGroup.alpha = 1f;
}
}
}
}