水是用粒子效果做的,粒子里有一个属性叫做Start Color,思路就是利用代码控制这个颜色变化。如果对于普通物体,则控制它材质的颜色属性即可。
代码如下,
Changecolor 函数控制颜色变换,需要在每帧都调用。如果一直运行,那么颜色也会在 colorStart 与 colorEnd 之间不停切换,所以需要用 timer 来控制它的运行条件。
Color colorStart = Color.red;
Color colorEnd = Color.green;
float duration = 5.0f; //变换时间
float timer = 0f; //计时器
void Update()
{
timer += Time.deltaTime;
if (timer <= duration)
Changecolor();
}
void Changecolor()
{
float lerp = Mathf.PingPong(Time.time, duration) / duration;
this.GetComponent<ParticleSystem>().startColor = Color.Lerp(colorStart, colorEnd, lerp);
}