- Home /
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();
}
}
Answer by meat5000 · Sep 02, 2013 at 07:36 AM
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.
Your answer
Follow this Question
Related Questions
Fog On and Off Script Help! 2 Answers
Animation Script not working. 1 Answer
Appear and Dissapear: Fog 1 Answer
animation and sound on collide 1 Answer