- Home /
Race begins when Green light shows
Hey Everyone,
I have made a racing game and I want to create a traffic light model with lighting effects that starts the race so it would go Red, 2 yellows then Green and the race would begin.
Now coding wise I have an idea but I have a feeling I'm going about it the wrong way
I have something like this in mind.
var redTexture : Texture2D; var yellow1Texture : Texture2D; var yellow2Texture : Texture2D; var greenTexture : Texture2D;
var currentTime : int[10]; then base the switch on the light animations based on a timer of 10 seconds.
could anyone help me with this on how to set up that kind of timer.
Answer by worldofcars · Feb 15, 2012 at 09:36 PM
var car : GameObject;
var redTexture : Texture2D;
var yellow1Texture : Texture2D;
var yellow2Texture : Texture2D;
var greenTexture : Texture2D;
private var startTime;
private var restSeconds : int;
private var roundedRestSeconds : int;
private var displaySeconds : int;
private var displayMinutes : int;
var countDownSeconds : int;
function Awake() {
startTime = Time.time;
}
function OnGUI () {
//make sure that your time is based on when this script was first called
//instead of when your game started
var guiTime = Time.time - startTime;
restSeconds = countDownSeconds - (guiTime);
//display messages or whatever here -->do stuff based on your timer
if (restSeconds == 3) {
GUI.Box(Rect(200,200,200,200),redTexture);
}
if (restSeconds == 2) {
GUI.Box(Rect(200,200,200,200),yellow1Texture);
}
if (restSeconds == 1) {
GUI.Box(Rect(200,200,200,200),yellow2Texture);
}
if (restSeconds == 0) {
GUI.Box(Rect(200,200,200,200),greenTexture);
//start your game here
//enable all scripts to start your game... EXAMPLE:
car.GetComponent("Driving").enabled = true;
}
//display the timer
roundedRestSeconds = Mathf.CeilToInt(restSeconds);
displaySeconds = roundedRestSeconds % 60;
displayMinutes = roundedRestSeconds / 60;
text = String.Format ("{0:00}:{1:00}", displayMinutes, displaySeconds);
GUI.Label (Rect (400, 25, 100, 30), text);
}
Answer by ZweiD · Feb 15, 2012 at 09:59 PM
Since I don't know what language you use, I am just going to give you some pseudo code (that looks a lot like Boo) to give an idea on the general logic:
def Update():
currentTime += Time.deltaTime
if currentTime < 10:
// show redTexture
else if currentTime < 20:
// show yellow1Texture
else if currentTime < 30:
// show yellow2Texture
else if currentTime < 40:
// show greenTexture
else:
// maybe destroy the timer object?
That is probably the easiest way of achieving the behaviour you want. Alternatively you could check whenever the currentTime is greater or equal to 10s and change to the next texture. If you do it that way, you would need to keep track of the current state:
def Update():
currentTime += Time.deltaTime
if currentTime > 10:
currentTime -= 10
if currentState < 4: // assuming the green state is state 4
currentState += 1
// switch texture to lightTexture[currentState]
(assuming you store the textures in an array)
Hope that helps.
Your answer
Follow this Question
Related Questions
How do I make a lap timer? 2 Answers
Starting timer when I press a key 1 Answer
How can i add a timer to this code 1 Answer
How to make a timer read to the .001 of a second 2 Answers
Can anyone help me figure this script out? (Light Trigger) 1 Answer