Check for input in a non-Update() function?

So basically, I have a script that spawns a particle explosion, stops the player and hides the player model every time the player dies, and the player is able to restart the level by pressing enter.

Here are the relevant parts of the code:

	void OnTriggerEnter (Collider other) {
		//Player collides with an enemy
		if (other.gameObject.tag == "Enemy") {
			PlayerDeath ();
		}
	}

	//Check if player is falling off the map
	void Update () {
		if (transform.position.y <= -10) {
			PlayerDeath ();
		}
	}

	//When the player dies
	void PlayerDeath () {
		if (DeathLoop == true) {
			Instantiate (deathParticles, transform.position, Quaternion.identity);
			renderer.material.color = new Color (0.196f, 0.33f, 0.67f, 0);
			DeathLoop = false;
			manager.PlayerDie ();
			Pause ();
		}

		if (Input.GetKey (KeyCode.Return)) {
			transform.position = spawn;
			manager.ClearText ();
			Play ();
			renderer.material.color = new Color (0.196f, 0.33f, 0.67f, 1f);
			DeathLoop = true;
		}
	}

The problem is when the player dies when colliding with an “enemy” tagged object, since the PlayerDeath() function is called but only takes input the moment it is executed, and so the player cannot restart the level unless they hold down enter as they die. So is there a way to make it check for the enter key being pressed as often as Update() does?

P.S. Sorry for the lengthy post but there’s a lot of code that’s relevant to the problem.

Yes, use a Coroutine:

void PlayerDeath()
{

StartCoroutine( MyCoroutine());
//your other code...
}

iEnumerator MyCoroutine()
{

bool inRoutine = true;

while( inRoutine )
{

if( input.GetKey (KeyCode.Return))
{

inRoutine = false;
//your other code..
}

yield return new WaitForEndOfFrame();
}
}