- Home /
Random spawn timer
I have a script, which spawns a random amount of gameobjects, at a random place on the screen, at a specific time, I would like this time to be random, so that the objects spawn at a random time, like if it was a random time between (1,5) but I can't seem to figure out how to implement it in to my script, I know it has something to do with random.range, as I have used at another place in the script, but I dont know how to implement it for the timer.
My Script so far.
var Mines : Transform;
private var Timer : float;
function Awake () {
Timer = Time.time + 4;
}
function Update () {
var randNum = Random.Range(0, 3); // this will return a number between 0 and 9
if (Timer < Time.time) {
for (var i = 0; i < randNum; i++){
var screenPosition : Vector3 = Camera.main.ScreenToWorldPoint(new Vector3(Random.Range(0,Screen.width), Random.Range(0,Screen.height), Camera.main.farClipPlane/2));
Instantiate(Mines, screenPosition, Quaternion.identity);
Timer = Time.time + 4;
Debug.Log("Spawned Mines");
}
}
}
Answer by HarshadK · Jan 13, 2015 at 08:11 AM
You just needs to add a random value to Time.time to set your Timer variable as below:
function Awake () {
// Add a random value of time to the Timer instead of a fixed value of 4
Timer = Time.time + Random.Range(1,6);
}
function Update () {
var randNum = Random.Range(0, 3); // this will return a number between 0 and 9
if (Timer < Time.time) {
for (var i = 0; i < randNum; i++)
{
var screenPosition : Vector3 = Camera.main.ScreenToWorldPoint(new Vector3(Random.Range(0,Screen.width), Random.Range(0,Screen.height), Camera.main.farClipPlane/2));
Instantiate(Mines, screenPosition, Quaternion.identity);
}
// Add a random value of time to the Timer instead of a fixed value of 4
Timer = Time.time + Random.Range(1,6);
Debug.Log("Spawned Mines");
}
}
Thank you very much, it works perfectly. $$anonymous$$ay I ask you, if it is possible to make the random timer, like a variable so that you can change it over time, without having to change the two Timer = Time.time + Random.Range(1,6);
lines every time?
You can create a function for getting random timer and call it every time you need.
function Awake () {
// Add a random value of time to the Timer ins$$anonymous$$d of a fixed value of 4
GetRandomTimer();
}
function Update () {
var randNum = Random.Range(0, 3); // this will return a number between 0 and 9
if (Timer < Time.time) {
for (var i = 0; i < randNum; i++)
{
var screenPosition : Vector3 = Camera.main.ScreenToWorldPoint(new Vector3(Random.Range(0,Screen.width), Random.Range(0,Screen.height), Camera.main.farClipPlane/2));
Instantiate($$anonymous$$ines, screenPosition, Quaternion.identity);
}
// Add a random value of time to the Timer ins$$anonymous$$d of a fixed value of 4
GetRandomTimer();
Debug.Log("Spawned $$anonymous$$ines");
}
}
function GetRandomTimer()
{
Timer = Time.time + Random.Range(1,6);
}
Is this what you are looking for?
Yes I think so, it is because I want it so that if a specific boolean = true the random timer will change, to spawn either slower or faster. I will try the script you made, again thank you very much.
Your answer
Follow this Question
Related Questions
Generate random number and set a GameObject active. 1 Answer
Only 2 out of 4 Objects ever spawn... Why ?(Closed) 2 Answers
Calling random functions 4 Answers
Spawn object in random areas 2 Answers
Randomize Spawn Time 2 Answers