Gradually change distance fog over time with a collider object.

Working on a script that causes the distance fog end distance to animate subtly from one setting to another when the player collides with a box. I thought I had it working, but it seems to simply pop from one setting to the other, instead of a smooth animation.

#pragma strict

public var timer = 0;
private var lerpTime : float = 14;

private var isLerping:boolean = false;
private var startTime:float;



function Update()
{
     if (isLerping)
{
     //   timer += Time.time;
  
          RenderSettings.fogEndDistance = Mathf.Lerp(85, 600, Time.time/(startTime  + lerpTime) );

} 
    
}


function lerpDistanceFog ()
{
     startTime = Time.time;
     isLerping=true;
 }

function OnTriggerEnter (col : Collider)
{
    if(col.gameObject.tag == "Player")
    {
          print ("Distance Fog End Distance is now lerping");
     lerpDistanceFog();
    }
}

Firstly, I see that as time goes by your Lerp approaches 1.

if Time.time = 1, startTime = 1, lerpTime = 14,
so,
Time.time/(startTime+lerpTime) = 1/15 = 0.06

if Time.time = 1000, startTime = 1000, lerpTime = 14,
so,
Time.time/(startTime+lerpTime) = 1000/1014 = 0.986

So as time gets bigger your Lerp will Snap more quickly.

Make a timer with,

lerpTimer += Time.deltaTime;

then use t = lerpTimer/lerpTime.

    public var lerpTimer : float = 0.0;
    private var lerpTime : float = 14.0;
     
    private var isLerping : boolean = false;
     
    function Update()
    {
    		if (isLerping)
    		{
    			lerpTimer += Time.deltaTime;
    			RenderSettings.fogEndDistance = Mathf.Lerp(85, 600, lerpTimer/lerpTime) );
    		 
    			if ((lerpTimer/lerpTime) >= 1)
    			{
    				isLerping = false;
    				lerpTimer = 0;
    			}
    		
    		}
    }
     
    function lerpDistanceFog ()
    {
    		lerpTimer = 0;
    		isLerping = true;
    }
     
    function OnTriggerEnter (col : Collider)
    {
    		if(col.gameObject.tag == "Player")
    		{
    			print ("Distance Fog End Distance is now lerping");
    			lerpDistanceFog();
    		}
    }

Also try adding a re-trigger delay, such that once the fogdistance change is triggered the Lerp is allowed to complete before the trigger can be used again.