- Home /
can i delay the script in the 'function update'?
 #pragma strict
 
 var projectile : GameObject;
 var fireRate : float = 0.5;
 internal var nextFire : float;
 var speed : float = 5;
 
 
 function Start () {
 
 }
  
 function Update(){
 
     //"Fire1" is Left Mouse Button or Left Ctrl 
     if (Input.GetButton ("Fire1") && Time.time > nextFire){
         nextFire = Time.time + fireRate;
         var clone : GameObject = Instantiate (projectile, transform.position, transform.rotation);
         clone.rigidbody.velocity = transform.TransformDirection(Vector3 (speed,0,0));
         Physics.IgnoreCollision(clone.collider, transform.root.collider);
         
     }
 }
sorry i dont know how to put the script in properly to unity answers.
ok, so i have this script on a 'cube' and its for a shotgun shell to be ejected from my shotgun.
i also have the same script on another 'cube' for the round itself, just with a different axis for "speed".
both the shell and the round exit the gun from the right places, but both at the same time.
i want to delay the shotgun shell from ejecting for a second or two.
how would i go about this.
thanks everyone.
oh, so i do know how to put the script in its proper format in unity answers
Answer by tanoshimi · Apr 03, 2014 at 06:08 PM
You don't need coroutines. Just Invoke the method after your chosen delay.
 function Update(){
     //"Fire1" is Left Mouse Button or Left Ctrl
     if (Input.GetButton ("Fire1") && Time.time > nextFire){
         Invoke("Eject", 1.5);
     }
 }
 
 function Eject(){
     nextFire = Time.time + fireRate;
     var clone : GameObject = Instantiate (projectile, transform.position,    transform.rotation);
     clone.rigidbody.velocity = transform.TransformDirection(Vector3 (speed,0,0));
     Physics.IgnoreCollision(clone.collider, transform.root.collider);
 }
thank you very much tanoshimi you my friend are a legend. works perfectly. savage, thanks again.
Answer by Graham-Dunnett · Apr 03, 2014 at 03:24 PM
You can't delay the Update() function, but you can use co-routines:
http://docs.unity3d.com/Documentation/ScriptReference/Coroutine.html
ok so do i something like this,
 #pragma strict
 
 var projectile : GameObject;
 var fireRate : float = 0.5;
 internal var nextFire : float;
 var speed : float = 5;
 
 function Start () {
 
 }
 
 function update(){
     if (Input.GetButton ("Fire1") && Time.time > nextFire){
 
     Wait();
 
 function Wait(){
      yield WaitForSeconds(1.5);
      nextFire = Time.time + fireRate;
      var clone : GameObject = Instantiate (projectile, transform.position, transform.rotation);
      clone.rigidbody.velocity = transform.TransformDirection(Vector3 (speed,0,0));
      Physics.IgnoreCollision(clone.collider, transform.root.collider);
Your answer
 
 
             Follow this Question
Related Questions
Function in Update delaying involuntarily 2 Answers
How to create a delay in a function being called in update? 2 Answers
Update increment error (2 + 1 = 0?) 1 Answer
How do i delay function Update 3 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                