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(); 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(); 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); } } } }