void Awake() { instance = this; lowRain.Play(); lowRain.loop = true; lowRain.volume = 0; highRain.Play(); highRain.loop = true; highRain.volume = 0; }
public static void SetRainStrength(float strength) { ParticleSystem.EmissionModule module = RainParticleSystems[0].emission; module.rateOverTime = maxParticleEmission[0] * strength; module = RainParticleSystems[1].emission; module.rateOverTime = maxParticleEmission[1] * strength; module = RainParticleSystems[2].emission; module.rateOverTime = maxParticleEmission[2] * strength; if (RainAudio.isPlaying) { if (strength > 0) { float multiplier = 0; int samples = 0; for (int x = 0; x < WeatherSource.CloudRenderImage0.width; x++) { for (int y = 0; y < WeatherSource.CloudRenderImage0.height; y++) { multiplier += Mathf.RoundToInt(WeatherSource.CloudRenderImage0.GetPixel(x, y).a); samples++; } } multiplier /= samples; // percentage of sky directly above player that is raining multiplier = SimplisticCompressor(multiplier, 0.125f); //multiplier = SimplisticCompressor(multiplier, 0.25f); RainAudio.volume = Mathf.MoveTowards(RainAudio.volume, strength * multiplier, 0.001f); } else { RainAudio.Stop(); } } else { if (strength > 0) { RainAudio.Play(); } } }