- 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