WaitForSeconds not working C#

I want a “cooldown” timer before a player is allowed to fire another attack but i never see the second debug message.

 private void Fireball(){
		StartCoroutine(Wait());
		Transform pos = transform.Find("shootPos");

		GameObject Fireball = Instantiate (Resources.Load ("Prefabs/Character/Sorceress/SorceressAbilities/Fireball"), pos.position, transform.rotation) as GameObject;
	}

private IEnumerator Wait()
	{
		Debug.Log ("Wait started");
		yield return new WaitForSeconds (55.0f);
		Debug.Log ("Wait ended");
	}

You probably want to check if your timescale din’t changed. Also, your code isn’t right. if you want to wait for some function to finish, you have to yield the function itself. Like this (pseudo code):

private bool isFiring;

void Update()
{
   if(!isFiring)
   {
      StartCoroutine(Fireball());
   }
}

IEnumerator Fireball()
{
isFiring = true;
yield return StartCoroutine(Wait());//yielded function
Transform pos = transform.Find("shootPos");
 
GameObject Fireball = Instantiate (Resources.Load ("Prefabs/Character/Sorceress/SorceressAbilities/Fireball"), pos.position, transform.rotation) as GameObject;
isFiring = false;
}
 
IEnumerator Wait()
{
Debug.Log ("Wait started");
yield return new WaitForSeconds (55.0f);
Debug.Log ("Wait ended");
}

yield WaitForSeconds(55.0f)

Your currently asking to wait one frame then returm