From 766cdff5ffa72b65d7f106658d1603f47739b2ba Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Fri, 27 Oct 2023 11:05:14 +0800 Subject: + init --- GameCode/GridLightBulb.cs | 57 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 GameCode/GridLightBulb.cs (limited to 'GameCode/GridLightBulb.cs') diff --git a/GameCode/GridLightBulb.cs b/GameCode/GridLightBulb.cs new file mode 100644 index 0000000..8fa2523 --- /dev/null +++ b/GameCode/GridLightBulb.cs @@ -0,0 +1,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(); + 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; + } +} -- cgit v1.1-26-g67d0