Пример #1
0
        public static CameraPostProcess AddPostProcess(Material material)
        {
            CameraPostProcess postProcess = Camera.main.gameObject.AddComponent <CameraPostProcess>();

            postProcess.PostProcessMaterial = material;

            return(postProcess);
        }
Пример #2
0
        private IEnumerator Distort()
        {
            _audio.PlaySoundAtTransform(GlitchSound.name, transform);
            _postProcess = CameraPostProcess.AddPostProcess(Material);

            yield return(new WaitForSeconds(GlitchSound.length));

            DestroyImmediate(_postProcess);
            _postProcess = null;

            gameObject.SetActive(false);
        }
Пример #3
0
        private IEnumerator WobbleTime(float duration)
        {
            _postProcess = CameraPostProcess.AddPostProcess(Material);

            _ref = _audio.PlaySoundAtTransformWithRef(WobbleAudio.name, transform);

            float finalTime = Random.Range(0, 2) == 0 ? Random.Range(0.4f, 0.6f) : Random.Range(1.2f, 1.3f);
            float sign      = Mathf.Sign(finalTime - 1.0f);

            float startTime = Time.realtimeSinceStartup;

            while ((Time.realtimeSinceStartup - startTime) < (duration * 0.8f))
            {
                float delta = (Time.realtimeSinceStartup - startTime) / (duration * 0.9f);

                Time.timeScale = Mathf.SmoothStep(1.0f, finalTime, delta);
                Material.SetFloat("_Stretch", Mathf.Lerp(1.0f, 1.0f - sign, delta));
                Material.SetFloat("_Vignette", Mathf.Lerp(0.0f, sign * -2.0f, delta));

                yield return(null);
            }

            yield return(new WaitForSeconds(duration * 0.1f));

            startTime = Time.realtimeSinceStartup;
            while ((Time.realtimeSinceStartup - startTime) < (duration * 0.1f))
            {
                float delta = (Time.realtimeSinceStartup - startTime) / (duration * 0.1f);

                Time.timeScale = Mathf.SmoothStep(finalTime, 1.0f, delta);
                Material.SetFloat("_Stretch", Mathf.Lerp(1.0f - sign, 1.0f, delta));
                Material.SetFloat("_Vignette", Mathf.Lerp(sign * -2.0f, 0.0f, delta));

                yield return(null);
            }

            Time.timeScale = 1.0f;

            _ref.StopSound();
            _ref = null;

            DestroyImmediate(_postProcess);
            _postProcess = null;

            gameObject.SetActive(false);
        }