x


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

more ▼

asked Jul 12 '12 at 09:35 PM

Jammer3000 gravatar image

Jammer3000
18 4 10 17

This is UnityScript (Unity's implementation of JavaScript), which is very different from Java. Just FYI.

Jul 12 '12 at 09:58 PM FishSpeaker

Please format code when posting, thanks.

Jul 13 '12 at 12:19 AM Eric5h5
(comments are locked)
10|3000 characters needed characters left

2 answers: sort voted first

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.

more ▼

answered Jul 12 '12 at 09:49 PM

Piflik gravatar image

Piflik
5.4k 15 26 44

(comments are locked)
10|3000 characters needed characters left

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

answered Jul 13 '12 at 12:32 AM

Bunny83 gravatar image

Bunny83
45.2k 11 49 207

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x5069
x3325
x2083
x764
x179

asked: Jul 12 '12 at 09:35 PM

Seen: 567 times

Last Updated: Jul 13 '12 at 12:32 AM