using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Rendering.PostProcessing; public class ToasterEffect : MonoBehaviour, IEffect { [SerializeField] float forwardSpeed = 0.5f; [SerializeField] float backSpeed = 2; [SerializeField] float maxBloomIntensity = 20; [SerializeField] float maxVignetteIntensity = 0.2f; [SerializeField] AudioClip hotSFX; [SerializeField] PostProcessVolume volume; Bloom bloom; Vignette vignette; [SerializeField] Gradient hotGradient; [SerializeField] SpriteRenderer hotSpriteImage; [SerializeField] GameObject SmokeEffect; private void Awake() { volume.profile.TryGetSettings(out bloom); volume.profile.TryGetSettings(out vignette); } public void Play() { StopAllCoroutines(); StartCoroutine(TosterVictory()); } IEnumerator TosterVictory() { Color color; SoundManager.instance.playClip(hotSFX); SmokeEffect.SetActive(true); //Прямое направление float param = 0; while (param <= 1) { bloom.intensity.value = param * maxBloomIntensity; vignette.intensity.value = param * maxVignetteIntensity; color = hotGradient.Evaluate(param); hotSpriteImage.color = color; bloom.color.value = color; vignette.color.value = color; param += forwardSpeed * Time.deltaTime; yield return null; } param = 1; while (param > 0) { param = Mathf.Clamp01(param); bloom.intensity.value = param * maxBloomIntensity; vignette.intensity.value = param * maxVignetteIntensity; color = hotGradient.Evaluate(param); hotSpriteImage.color = color; bloom.color.value = color; vignette.color.value = color; param -= backSpeed * Time.deltaTime; yield return null; } color = hotGradient.Evaluate(0); hotSpriteImage.color = color; bloom.color.value = color; vignette.color.value = color; bloom.intensity.value = 0; vignette.intensity.value = 0; } }