- 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