blob: 8fa2523c11f518208a66150f667d74e82ed47ddf (
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
|
using System.Collections;
using UnityEngine;
public class GridLightBulb : GridObject
{
private SpriteRenderer rend;
public Color maxLightColor;
private Color baseColor;
private bool isLitUp;
private float currentDistance;
private void Start()
{
rend = GetComponent<SpriteRenderer>();
baseColor = rend.color;
}
public override void BopCall(float distance)
{
distance = 1f - distance;
if (!isLitUp || (isLitUp && distance > currentDistance))
{
StopAllCoroutines();
StartCoroutine(LightUp(distance));
}
}
private IEnumerator LightUp(float distance)
{
isLitUp = true;
currentDistance = distance;
Color lightColor = Color.Lerp(maxLightColor, baseColor, distance);
rend.color = lightColor;
yield return new WaitForSeconds(Random.Range(0.5f, 2f));
int blinks = Random.Range(0, 8);
bool isOn = true;
for (int i = 0; i < blinks; i++)
{
if (isOn)
{
rend.color = baseColor;
}
else
{
rend.color = lightColor;
}
isOn = !isOn;
yield return new WaitForSeconds(Random.Range(0.05f, 0.1f));
}
rend.color = baseColor;
isLitUp = false;
}
}
|