Flashlight Flicker!

hey guys, I need some help with a first Person Survival/Adventure game that involves you searching the forest for survivors of a plane crash. After about 5 minutes in game, I want the Flashlight to begin to flicker. Here is my flashlight script:

var flashlightOn : boolean = false;



var soundOn : AudioClip;



var soundOff : AudioClip;



var onIntensity = 5.0;



var offIntensity = 0.0;



 



function Update () {



   //Checks if the F key is down and whether the boolean is on or off.



   if(Input.GetKeyDown(KeyCode.F) && flashlightOn == false){



   



   AudioSource.PlayClipAtPoint(soundOn, light.transform.position);



   flashlightOn = true; //If the f key is down and the boolean is false, it sets the boolean to true.



   light.intensity = onIntensity;



   



   } else {



   



   if(Input.GetKeyDown(KeyCode.F) && flashlightOn == true) {



   



   AudioSource.PlayClipAtPoint(soundOff, light.transform.position);



   flashlightOn = false;//If the f key is down and the boolean is true, it sets the boolean to false.



   light.intensity = offIntensity;



      }



   }



   



}

And This is my flicker effect:

// Properties

var waveFunction : String = “sin”; // possible values: sin, tri(angle), sqr(square), saw(tooth), inv(verted sawtooth), noise (random)

var base : float = 0.0; // start

var amplitude : float = 1.0; // amplitude of the wave

var phase : float = 0.0; // start point inside on wave cycle

var frequency : float = 0.5; // cycle frequency per second

// Keep a copy of the original color

private var originalColor : Color;

// Store the original color

function Start () {

originalColor = GetComponent(Light).color;

}

function Update () {

var light : Light = GetComponent(Light);

light.color = originalColor * (EvalWave());

}

function EvalWave () {

var x : float = (Time.time + phase)*frequency;

var y : float;

x = x - Mathf.Floor(x); // normalized value (0…1)

if (waveFunction==“sin”) {

y = Mathf.Sin(x*2*Mathf.PI);

}

else if (waveFunction==“tri”) {

if (x < 0.5) 

  y = 4.0 * x - 1.0;

else

  y = -4.0 * x + 3.0;  

}

else if (waveFunction==“sqr”) {

if (x < 0.5) 

  y = 1.0;

else

  y = -1.0;  

}

else if (waveFunction==“saw”) {

  y = x;

}

else if (waveFunction==“inv”) {

y = 1.0 - x;

}

else if (waveFunction==“noise”) {

y = 1 - (Random.value*2);

}

else {

y = 1.0;

}

return (y*amplitude)+base;

}

How would I make it so that after about 5 minutes, the 2 script is activated and then about 10 seconds after that, both scripts are deactivated - emulating a fading battery? your help would be greatly appreciated!

2 Answers

2

I won’t copy it over, but if you go check out this tutorial and scroll down to ‘Countdown Timer,’ you could make one and set triggers at the 5:00 and 5:10 marks that toggle booleans to activate/deactivate the scripts.

Hope that helps!

Ok, here's some clarification :) I haven't customized the variables to your script, but it should be pretty easy to see what you'd need to edit to use it. private var flashFlicker : boolean = false; private var flashOn : boolean = true; private var timerOn : boolean = true; function timerRun(){ while(timerOn == true){ yield WaitForSeconds(300.0); flashFlicker = true; yield WaitForSeconds(10.0); flashOn = false; flashFlicker = false; timerOn = false; } } timerRun();

–

ok so i would put this on my flashlight right as a seperate script and rename the variables to the 2 script names correct??

–

That should do the job. Oh, or you could toss out those variables and place a this.GetComponent(ScriptName).enabled=false; in their place. Bit more compact, now that I'm thinking about it.

–

Oh, or even shorter: function timerRun(){ yield WaitForSeconds(300.0); this.GetComponent(FlashlightFlickerScript).enabled=true; yield WaitForSeconds(10.0); this.GetComponent(FlashlightFlickerScript).enabled=false; this.GetComponent(FlashlightOnScript).enabled=false; } timerRun(); As you can tell by now, I'm not the most efficient scripter (yet) either :D But I'm testing these before giving them to you, so they should all work :)

–

ok… ive just read through it and, How do I implement this into my script? im ultra mega bad when it comes to scripting!

Please don't post comments as answers. Post comments by clicking the [add new comment] button, a window then open for you to type in. Answer fields are for answers only, as this is a knowledge base.

–