blob: 7bc2eff589b41ce07434d1ece65f240011c514d6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
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());
}
}
}
|