void UpdateProximity(float distance) { float radius = circleCollider.radius * transform.lossyScale.x; float distanceComponent = (radius - distance) / radius; float frequencyComponent; int bandDistance = ConsoleController.BandDistance(band, console.band); switch (bandDistance) { case 0: //Frequencies are on the same band. frequencyComponent = 0.5f + 0.5f * (1 - Mathf.Abs(tuning - console.tuning)); break; case 1: //Frequencies are on adjacent bands. frequencyComponent = 0.5f; break; case 2: //Frequencies are on semi-adjacent bands. frequencyComponent = 0.25f; break; case 3: //Frequencies are 3 bands apart. frequencyComponent = 0.1f; break; default: //Otherwise. frequencyComponent = 0; break; } proximity = 0.05f + 0.30f * distanceComponent + 0.65f * frequencyComponent; if (proximity > 1) { proximity = 1; } signalBar.fillAmount = proximity; }