Esempio n. 1
0
    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);
    }