//フレーム処理
    void Update()
    {
        //アメフラシの起動数0 OR カメラが水中の場合水滴のエフェクトを切る
        if (AmehurashiCont == 0 || inCamera.set)
        {
            rainCamera.Stop();
        }
        else
        {
            rainCamera.Play();
        }

        //アメフラシの起動数が変動した時
        if (AmehurashiCont != AmehurashiManager.amehurashi.amehurashiTrueCont)
        {
            AmehurashiCont = AmehurashiManager.amehurashi.amehurashiTrueCont;

            //起動数で雨の量を決定
            float def = (float)AmehurashiCont / (float)AmehurashiManager.amehurashi.AmehurashiQuantity;
            def *= def;
            for (int i = 0; i < rainScript.Length; i++)
            {
                rainScript[i].RainIntensity = def;
            }
            simpleRain.Variables.EmissionRateMax = (int)(rainMax * def);
            simpleRain.Variables.EmissionRateMin = (int)(rainMax * (def / 2));
        }

        //アメフラシの起動数を同期
        AmehurashiCont = AmehurashiManager.amehurashi.amehurashiTrueCont;
    }
Beispiel #2
0
    // Update is called once per frame
    void Update()
    {
        RenderSettings.fog      = useFog;
        RenderSettings.fogColor = fogColor;
        float h = Mathf.Max(mainCamera.transform.position.y, 0.1f);

        fogDensity = Mathf.Min(0.05f, Mathf.Pow(h, -1.3f));
        RenderSettings.fogDensity  = fogDensity;
        city.blockVisibilityRadius = Mathf.Clamp(h / 10, 0.3f, 1f) * 1000;// 100 * Mathf.Max(h, 0.3f, 10f) * ();
        mainCamera.backgroundColor = fogColor;

        Color ff = fogColor;

        ff.a = Mathf.Max(0.05f, groundDensity * Mathf.Pow(h, 0.6f));
        foreach (Renderer fog in floorFog)
        {
            fog.material.SetColor("_TintColor", ff);
        }


        for (int i = 0; i < floorFog.Length; i++)
        {
            floorFog[i].transform.position = new Vector3(0, Mathf.Pow(h * (0.5f * i + 0.1f), 0.6f) - 0.1f, 0);
        }

        //this is not the best to get the angle
        Vector3 camPosition    = mainCamera.transform.position;
        Vector3 cameraVelocity = cameraPrevPosition - camPosition;

        cameraPrevPosition = mainCamera.transform.position;
        rain.RainHeight    = mainCamera.transform.position.y + 10;
        if (rainAmount > 0 && rainExposed)
        {
            if (!rainOnCamera.IsPlaying)
            {
                rainOnCamera.Play();
            }

            rainOnCamera.GlobalWind = cameraVelocity;
            rain.RainIntensity      = rainAmount;
        }
        else
        {
            if (rainOnCamera.IsPlaying)
            {
                rainOnCamera.Stop();
            }

            rain.RainIntensity = rainAmount * 0.9f;
        }
        rainOnCamera.Alpha = rainAmount;
    }
Beispiel #3
0
        private IEnumerator FadeOutProgram()
        {
            StartCoroutine(AudioFader.FadeOut(_rainAudio, FadeTime));
            var duration = 0f;
            var rain     = MaxRain;

            while (duration < FadeTime)
            {
                rain -= MaxRain / (FadeTime * FadeSteps);
                _rainEmission.rateOverTime = rain;
                yield return(new WaitForSeconds(1f / FadeSteps));

                duration += 1f / FadeSteps;
            }

            _rainVision.Stop();
            _callback();
        }
Beispiel #4
0
 void STOPRAIN()
 {
     RC.Stop();
 }