Files
Continentis/Assets/OtherPlugins/Sprite Shaders Ultimate/Scripts/Interactive/WindManagerSSU.cs
SoulliesOfficial ad4948207e 推进度!
2025-11-25 21:49:03 -05:00

54 lines
1.8 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace SpriteShadersUltimate
{
[AddComponentMenu("Sprite Shaders Ultimate/Wind/Wind Manager")]
public class WindManagerSSU : MonoBehaviour
{
[Header("Settings:")]
[Tooltip("Smaller values will result in more frequent changes in wind.")]
public float windNoiseScale = 0.1f;
private float lastWindNoiseScale;
[Tooltip("Speed at which the wind pattern moves horizontally.")]
public float windNoiseSpeed = 1;
[Tooltip("The wind intensity will be between this value and 'Wind Intensity To'.")]
public float windIntensityFrom = -0.4f;
private float lastWindIntensityFrom;
[Tooltip("The wind intensity will be between this value and 'Wind Intensity From'.")]
public float windIntensityTo = 0.4f;
private float lastWindIntensityTo;
//Runtime:
float currentTime;
void Start()
{
currentTime = 0;
}
void FixedUpdate()
{
ModifyIfChanged(ref windNoiseScale,ref lastWindNoiseScale, "WindNoiseScale");
ModifyIfChanged(ref windIntensityFrom, ref lastWindIntensityFrom, "WindMinIntensity");
ModifyIfChanged(ref windIntensityTo, ref lastWindIntensityTo, "WindMaxIntensity");
currentTime += Time.fixedDeltaTime * windNoiseSpeed;
Shader.SetGlobalFloat("WindTime", currentTime);
}
public void ModifyIfChanged(ref float currentValue, ref float oldValue, string globalShaderName)
{
if(oldValue != currentValue)
{
oldValue = currentValue;
Shader.SetGlobalFloat(globalShaderName, currentValue);
}
}
}
}