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