-1

I have this code:

void Update ()
    {
        // If the fire button is pressed...
        if(Input.GetKey(KeyCode.Z))
        {


                // ... resetEvent.Wait(timeout)set the animator Shoot trigger parameter and play the audioclip.
                anim.SetTrigger("Shoot");
                GetComponent<AudioSource>().Play();



            // If the player is facing right...
            if (playerCtrl.facingRight)
            {
                // ... instantiate the rocket facing right and set it's velocity to the right. 
                Rigidbody2D bulletInstance = Instantiate(rocket, transform.position, Quaternion.Euler(new Vector3(0,0,0))) as Rigidbody2D;
                bulletInstance.velocity = new Vector2(speed, 0);


            }
            else
            {
                // Otherwise instantiate the rocket facing left and set it's velocity to the left.

//RIGHT HERE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                Rigidbody2D bulletInstance = Instantiate(rocket, transform.position, Quaternion.Euler(new Vector3(0,0,180f))) as Rigidbody2D;
                bulletInstance.velocity = new Vector2(-speed, 0);

            }
        }
    }

Where is says "RIGHT HERE", I want the action to pause for 1 second. I can't Thread.Sleep because that pauses the entire game, I just want it to wait.

user8488959
  • 57
  • 1
  • 6

2 Answers2

0

What happens is that you're sleeping the main thread instead of actually letting the main thread waiting for it to finish sleeping. That is why all code execution that are running in the main thread is stopped and for that reason the game freezes for you. So what you can do is:

yield return new WaitForSeconds(1);

Note that the value that the WaitForSeconds accepts them as floats instead of miliseconds comparing to Thread.Sleep. So if you need 1.25 seconds to sleep, you pass to it 1.25f.

0

This is a problem I'm sure we've all faced many times.

I've tried lots of different things like thread sleeping and coroutines but this is my best solution:

just simply put in a timer: a variable that each Update() call increases by Time.deltaTime. Then just have whatever logic you want performed after the wait in the Update and just check if enough time has passed.

Does this make sense?

pseudoabdul
  • 616
  • 3
  • 12