Light brightness "for loop" doesn't work
So, i'm trying to make a script that basically does this: When the game/scene starts, the light is very bright and gradually dims down to the desired intensity. But, it doesn't work. Whenever I try to make it "less than", it doesn't work, but when I do "greater than" it works, but stops at 4... I'm really new to Unity, with some knowledge to Javascript, so... help? #pragma strict
var lt : Light;
function Start ()
{
for (var i : int = 8; i < 0.5; i--)
{
lt.intensity -= 0.5;
yield WaitForSeconds(0.1);
}
}
Answer by Jessespike · May 16, 2016 at 04:07 PM
the for-loop is reducing i by 1 every iteration, but intensity is being reduced by 0.5 each iteration. So if the light intensity is at 8, it makes sense that it will stop at 4. You can change the for-loop to make it look like the original code:
for (var i : int = 8; i >= 0; i--)
{
lt.intensity = i;
yield WaitForSeconds(0.1);
}
This doesn't reduce intensity by 0.5 though, a float can be used for that:
for (var i : float = lt.intensity; i >= 0; i -= 0.5)
{
lt.intensity = i;
yield WaitForSeconds(0.1);
}
Another solution is to not use a for-loop, instead make a function and pass a timeLength variable for how long you want the transition to take:
function Start ()
{
LerpLightIntensity(lt.intensity, 0, 3); // Fade the current intensity to 0 in 3 seconds
LerpLightIntensity(0, 4, 10); // Fade the intensity from 0 to 4 in 10 seconds
}
function LerpLightIntensity(from : float, to : float, timeLength : float)
{
var elapsed : float = 0f;
while (lt.intensity != to)
{
var lerpTime : float = Mathf.Clamp(elapsed / timeLength, 0f, 1f);
lt.intensity = Mathf.Lerp(from, to, lerpTime);
yield WaitForEndOfFrame();
elapsed += Time.deltaTime;
}
}
Your answer
Follow this Question
Related Questions
Light intensity Lerp not functioning properly 1 Answer
UnityScript: BCE0048: Type 'ScriptFileName' does not support slicing. 0 Answers
Unity HDRP light measurement 0 Answers
Need a function to loop through an array to check tags 1 Answer
Dim lights while camera (player) comes closer to the light source 1 Answer