Files
OTG_6/Assets/_Scripts/Characters/ManaCrystal.cs
T
2026-06-04 21:37:43 +03:00

66 lines
1.6 KiB
C#

using UnityEngine;
namespace OTG.Lab06.Characters
{
public sealed class ManaCrystal : MonoBehaviour
{
[SerializeField] private float restoreAmount = 35f;
[SerializeField] private float respawnTime = 7f;
[SerializeField] private GameObject visualRoot;
private Collider triggerCollider;
private float cooldown;
private void Awake()
{
triggerCollider = GetComponent<Collider>();
if (visualRoot == null && transform.childCount > 0)
{
visualRoot = transform.GetChild(0).gameObject;
}
}
private void Update()
{
transform.Rotate(Vector3.up, 45f * Time.deltaTime, Space.World);
if (cooldown <= 0f)
{
return;
}
cooldown -= Time.deltaTime;
if (cooldown <= 0f)
{
SetAvailable(true);
}
}
private void OnTriggerEnter(Collider other)
{
PlayerStats stats = other.GetComponentInParent<PlayerStats>();
if (stats == null || cooldown > 0f)
{
return;
}
stats.RestoreMana(restoreAmount);
cooldown = respawnTime;
SetAvailable(false);
}
private void SetAvailable(bool available)
{
if (triggerCollider != null)
{
triggerCollider.enabled = available;
}
if (visualRoot != null)
{
visualRoot.SetActive(available);
}
}
}
}