- Home /
Repeating after variable delay
I've grown out of Invoke Repeating, and noticed the answers for this are either staggeringly complex or shrugs. Mainly because seasoned coders write these kinds of functions all the time, and the question it's self is far too basic as it's an integral way of thinking.
Anyhow, my question is: Is this the right way to make a lamp flicker with increasing intensity, based on a changing variable without using invokeRepeating (as I wish to change the delay on the fly). The code (UJS):
var settings : gamesettings;
var textureAlpha : float;
var originalTexture : Texture2D;
var flashingTexture : Texture2D;
var flashing : boolean;
var intervalCount : int;
var flashTime : int;
function Start () {
originalTexture = guiTexture;
}
function Update () {
textureAlpha = settings.playerFever / settings.playerMaxFever;
guiTexture.color = Color(.5,.5,.5,textureAlpha/2);
if (textureAlpha >= 0.75 && !flashing) {
flashing = true;
}
if (flashing) intervalCount++;
if (intervalCount >= flashTime && flashing) {
guiTexture.texture = flashingTexture;
RevertTexture();
}
}
function RevertTexture() {
yield;
guiTexture.texture = originalTexture;
intervalCount = 0;
}
flashTime variable would be changed somewhere else, but for now imagine it would start at 100 and get closer to 1 as things happen.
Answer by whydoidoit · Aug 22, 2013 at 06:20 AM
It looks fine to me, the only issue I would say is that you are not using Time.deltaTime so the flashing period will be affected by the framerate of the game, which will make it somewhat inconsistent.
To change that you would make intervalCount a float not an int and add Time.deltaTime to it, rather than increment it.
Clearly you would want to change the values from being 100 to 1 in flashTime. If that's based on health or something then just divide it by 100.0 perhaps?
Your answer
Follow this Question
Related Questions
How to Instantiate prefabs with function Update? 1 Answer
Invoke() and InvokeRepeating() not working on webplayer? 1 Answer
InvokeRepeating doesn't work 2 Answers
InvokeRepeating doesn't work at 0.00002 seconds 2 Answers
Add delay to Fixed Update?,How to add a delay to moving object in Fixed Update? 0 Answers