- Home /
How to delay lines of code.
Hi I need to know how to delay lines of code. For example I have an enemy that has animation and all that stuff, and its purpose is like a suicide bomber, so it charges the player and if he shoots it, it will explode leaving a cloud of smoke behind, but the problem is I need it so when my a certain time is reached the enemy will be destroyed, but in code after a certain time it will just run three lines of code in an if statement that will destroy it. The code I'm using to destroy my enemy is below and the three lines that need to run in a certain amount of time are in the if statement. Its all in java, and if you can make a public float variable for the timed code that would be great. Thanks so much.
var stars : ParticleEmitter;
var explosion : AudioClip;
function OnCollisionEnter (collision : Collision)
{
if(collider.gameObject.tag == "Untagged")
{
//Delay the three lines below
Instantiate(stars, transform.position, transform.rotation);
Destroy(gameObject);
audio.PlayOneShot(explosion);
}
}
This is UnityScript (Unity's implementation of JavaScript), which is very different from Java. Just FYI.
This is a kind of old question and i just noticed you edited the question. However i can't see anything new in the question and the question still doesn't have an accepted answer. If you have new information edit the question or post a comment, otherwise please select one of the answers by clicking the checkmark:
Sorry I was just looking for a way to delay code in the update function but all of the answers given are for start which I already know how to do, so like every five seconds do something in the update
Answer by Piflik · Jul 12, 2012 at 09:49 PM
To delay a function, all you need is 'yield'. You can either wait until a given function is completed or a set number of seconds.
example:
function Start() {
AutoDestruct(7.5F);
}
function AutoDestruct(delay : float) {
yield WaitForSeconds(delay);
SelfDestruct();
}
SelfDestruct() would be a different function that destroys the gameobject and creates the particle effect (or whatever) and is called on collision with a projectile. The above code would call SelfDestruct() 7.5 seconds after the object is created.
Answer by Bunny83 · Jul 13, 2012 at 12:32 AM
Phillipp is right, but if you just want to destroy something delayed, you can simply use the second version of Destroy that takes an additional delay value ;)
Destroy(gameObject, 5.0);