using System.Collections; using Shapes; using UnityEngine; public class LevelBorder : MonoBehaviour { public BoxCollider boxCol; public float fadeInDistance; public Line line; private readonly float tickTime = 0.5f; private readonly float fadeTime = 0.75f; private float timer; private bool fadedIn; private Transform target; private Color defaultColor; private Color fadeOutColor; private Coroutine currentFade; private void Start() { target = TagManager.instance.Players[0].transform; defaultColor = line.Color; fadeOutColor = defaultColor; fadeOutColor.a = 0f; line.Color = fadeOutColor; } private void Update() { timer += Time.deltaTime; if (!(timer >= tickTime)) { return; } timer = 0f; float num = Vector3.Distance(target.position, boxCol.ClosestPoint(target.position)); if (fadedIn && num > fadeInDistance) { if (currentFade == null) { currentFade = StartCoroutine(FadeOut()); } fadedIn = false; } else if (!fadedIn && num <= fadeInDistance) { if (currentFade == null) { currentFade = StartCoroutine(FadeIn()); } fadedIn = true; } } private IEnumerator FadeIn() { float timer = 0f; while (timer <= fadeTime) { timer += Time.deltaTime; line.Color = Color.Lerp(fadeOutColor, defaultColor, timer / fadeTime); yield return null; } line.Color = defaultColor; currentFade = null; if (!fadedIn) { currentFade = StartCoroutine(FadeOut()); } } private IEnumerator FadeOut() { float timer = 0f; while (timer <= fadeTime) { timer += Time.deltaTime; line.Color = Color.Lerp(defaultColor, fadeOutColor, timer / fadeTime); yield return null; } line.Color = fadeOutColor; currentFade = null; if (fadedIn) { currentFade = StartCoroutine(FadeIn()); } } }