using UnityEngine; using UnityStandardAssets.ImageEffects; public class WaterWaveOnUI : PostEffectBase { //距离系数 public float distanceFactor = 60.0f; //时间系数 public float timeFactor = -30.0f; //sin函数结果系数 public float totalFactor = 1.0f; //波纹宽度 public float waveWidth = 0.3f; //波纹扩散的速度 public float waveSpeed = 0.3f; private float waveStartTime; public void StartWave() { enabled = true; //设置startTime waveStartTime = Time.time; } void OnRenderImage(RenderTexture source, RenderTexture destination) { if (Time.time - waveStartTime > 1) { //如果时间超过1s,关闭波纹效果 enabled = false; return; } //计算波纹移动的距离,根据enable到目前的时间*速度求解 float curWaveDistance = (Time.time - waveStartTime) * waveSpeed; //设置一系列参数 _Material.SetFloat("_distanceFactor", distanceFactor); _Material.SetFloat("_timeFactor", timeFactor); _Material.SetFloat("_totalFactor", totalFactor); _Material.SetFloat("_waveWidth", waveWidth); _Material.SetFloat("_curWaveDis", curWaveDistance); Graphics.Blit(source, destination, _Material); } }