Using WaitUntil to Delay a Coroutine in Unity3D


Objective: Delay the Enemy’s ability to fire a laser until the Enemy GameObject is within the screen boundaries.

Step 1: In the Enemy script, create a private bool called _canFire and set it to false.

Step 2: Create a private method called CanFireLaser() and create an if statement stating that if the Enemy GameObject’s X position is greater than -10 and less than 10, and the Y position is less than 6.5, then _canFire is set to true.

Step 3: Within the Update() method, call the CanFireLaser() method.

Step 4: Within the InstantiateEnemyLaserRoutine() coroutine, use the WaitUntil function to delay the laser instantiation until _canFire is equal to true.

Now the Enemy will not be able to fire a laser until it is visible on-screen.