private IEnumerator CharacterDeath() { // Esperamos un segundo //yield return new WaitForSeconds(1); // Lanzamos la animación de muerte character.CharacterHealth.PlayDeathAnimation(); // Esperamos a que termine, y un poco más yield return(new WaitForSeconds(2.5f)); // Hacemos un fade del canvas, personaje y habitación canvasController.FadeIn(); character.CharacterGraphics.FadeOut(fadingSpeed); assignedCombatRoom.FadeOut(); // Esperamos a que todo esté apagado y un segundo más yield return(new WaitUntil(() => fadingOut == false)); yield return(new WaitUntil(() => character.CharacterGraphics.IsFadingOut == false)); yield return(new WaitUntil(() => canvasController.IsFadingOut == false)); yield return(new WaitForSeconds(0.5f)); // Posicionamos al personaje en casa character.transform.position = new Vector3(mapController.respawnPoint.x, mapController.respawnPoint.y, character.transform.position.z); // Lo volvemos bueno character.CharacterHealth.GoGood(); // Reseteamos el timebar canvasController.TerminateTimeBar(); // Detenemos los ataques assignedCombatRoom.StopAllAttacks(); // Hacemos un fade del personaje, de las habitaciones y del canvas character.CharacterGraphics.FadeIn(fadingSpeed); mapController.FadeInMap(); canvasController.FadeOut(); // Ajustamos la cámara y reactivamos colliders cameraController.FocusMap(fadingSpeed); mapController.ActivateColliders(); // Esperamos a que terminen los fades yield return(new WaitUntil(() => fadingIn == false)); yield return(new WaitUntil(() => character.CharacterGraphics.IsFadingIn == false)); // Habilitamos el control del personaje y su salud character.CharacterMovement.EnabledInteraction = true; character.CharacterHealth.SetAlive(true); }