chip-game/Assets/Scripts/Global VFX/ToasterEffect.cs
2026-01-12 09:36:17 +03:00

85 lines
2.2 KiB
C#

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;
}
}