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);

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.


function Start() {

function AutoDestruct(delay : float) {
    yield WaitForSeconds(delay);

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.

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 :wink:

Destroy(gameObject, 5.0);