respawn player after edelay c#

Hi Guys, Im doing a project for college where we have to build space invaders from the ground upMy problem is as follows:

When the player hits a ship the game over screen is loaded with apllication.load level

After a couple of seconds (4) i want the game to restart or the player to respawan what is the easiest way to do this in c# here is my player script:

using UnityEngine;
using System.Collections;

public class SpaceShip : MonoBehaviour { // Spaceship is the player

//properties go here
public int Health = 1;       // health of player	
public float Speed = 10;    //how fast he moves
public GameObject Torpedo; //What he shoots,Note: must be set in unity

// Update is called once per frame
void Update ()
{	
  //Tests go here
	if(Input.GetAxis("Horizontal") != 0)
	{
		Move();
	}	
	if( Input.GetButtonDown("Fire1"))
	{
	  Shoot ();	
	}	
	if(GameManager.GameOver == GameOver)
	{
		Respawn ();
	}	
}    

void Move ()
{
 // moves the player
 // Calc how much to move
  	float LeftRightMovement = Input.GetAxis("Horizontal") * Speed * Time.deltaTime;
	
 // move the ship
	transform.Translate(LeftRightMovement,0,0);
}	

void Shoot ()
{
 // Creates torpedos	
   Instantiate(Torpedo,transform.position, transform.rotation);	
}	

public void Die ()
{
 // Remove the player
	print("Player has been hit");
	GameManager.GameOver ();
}	

void Respawn ()
{
 //recreate the player
	print ("Respawn");
	GameManager.SpaceShooter ();
}	

}

Im a newbie coder, so please answer with that in mind. Cheers

One of the best ways to control things that happen over time in C# is by using Coroutines and Invokes. They allow you to do something over time (Coroutines) or after a certain amount of time (Invokes). Check it:

private bool doSomething = true;
void Start()
{
    StartCoroutine(DoSomethingOverTime());
    Invoke("DoSomethingEventually", 5)
}

IEnumerator DoSomethingOverTime()
{
    while (doSomething)
    {
        print (Time.time);
        yield return new WaitForSeconds(someFloatAsTime);
    }
}

void DoSomethingEventually()
{
    doSomething = false;
}

Check out the following documentations for more information!

http://docs.unity3d.com/Documentation/ScriptReference/index.Coroutines_26_Yield.html