コード例 #1
0
ファイル: LevelManager.cs プロジェクト: IfreannMedia/Invasion
    // ----------------------------------------------------------------
    // IEnumerator: EndLevelSequence()
    // Description: Stops enemies spawning, disables user input,
    //              ragdolls all active enemies, fades to the score counter
    //              screen and disables user cameras
    // ----------------------------------------------------------------
    public IEnumerator EndLevelSequence()
    {
        _spawnScript.StopAllCoroutines();
        _spawnScript.CancelInvoke();
        DisableUserInput();

        RagdollManager[] enemies = FindObjectsOfType <RagdollManager>();
        foreach (RagdollManager enemy in enemies)
        {
            enemy.EnableRagdoll();                 // enable each enemy ragdoll
            yield return(new WaitForEndOfFrame()); // put 1 frame between each ragdoll
        }

        Camera[] playerCams = new Camera[2];
        playerCams = _player.GetComponentsInChildren <Camera>();

        AlphaFade.GetComponent <Animator>().SetTrigger("Fade");
        yield return(new WaitUntil(() => AlphaFade.color.a == 1)); // fade screen to black

        _player.gameObject.SetActive(false);
        _levelEndCamera.GetComponent <AudioListener>().enabled = true;
        _levelEndCamera.enabled = true;
        playerCams[0].enabled   = false;
        playerCams[1].enabled   = false;

        AlphaFade.GetComponent <Animator>().SetTrigger("Fade");
        yield return(new WaitUntil(() => AlphaFade.color.a == 0)); // fade screen to clear

        _endLevelCanvas.gameObject.SetActive(true);                // activate the score counter canvas object

        Cursor.lockState = CursorLockMode.None;
        Cursor.visible   = true;
    }