StartCoroutine is not working

Hi, I would like to play a sound when the player enter the collider and then after 10 sec only the second coroutine will call. but unfortunately it seems that coroutine is running at the same time(there is no delay). below is the code. Hope somebody can help me. PLEASE…

void OnTriggerEnter( Collider col)
{ if (col.gameObject.tag == “Player” )

		{	
			
				StartCoroutine("AudioStart");
				StartCoroutine("WaitHere");
			
		}	// end if	
		//FPCStart.ansq++;
	//Debug.Log (GameControl.control.ansq++);
	}//end function on trigger enter

IEnumerator AudioStart()
{
	audio.clip = StartAns;
	audio.Play ();

	yield return new WaitForSeconds (10.0f);

}// end function AudioStart

	
IEnumerator WaitHere()
	{ float timeLeft = 0.0f;
		
		
		while (timeLeft<10.0f && !Ans) 
		{
			timeLeft += Time.deltaTime;
			Fig.SetActive (true);	
			
			if (Input.GetKeyDown(KeyCode.Y))
			{
				
			GameControl.control.correctAns +=1;
			GameControl.control.Correct();
				
				Ans = true;
			}
			else if (Input.GetKeyDown(KeyCode.T))
			{
			GameControl.control.wrongAns +=1;
			Ans =true;
				
			}
			yield return null;
		}// end while
		
		
			Destroy (Fig);	
		
		if (Ans == false) 
		{
			audio.clip = endGame;
			audio.Play ();
		}		

	}// end ienu

Your problem is that “StartCoroutine” returns immediately, in order to have it wait, you have to yield the result.

What you could do, for example, is:

IEnumerator StartCoroutines() {
     yield return StartCoroutine("AudioStart");
     StartCoroutine("WaitHere");
 }

Or you can just have the first coroutine start the second after the “yield” statement.
Documentation here and here.

As per your requirement the solution is ,

yield return new WaitForSeconds (10.0f);

this line should be the first line of the second method.

As you are calling both the methods at same time, second method will wait 10 seconds when ever it starts.

(Or)

StartCoroutine(“WaitHere”);

should be written after

yield return new WaitForSeconds (10.0f);

this line in “AudioStart” method.