예제 #1
0
    IEnumerator Cutscene()
    {
        engine.Dialogue("The exit is too small", 1.0f);
        yield return(new WaitForSeconds(3.0f));

        engine.Dialogue("One of us has to go first", 1.0f);
        yield return(new WaitForSeconds(3.0f));

        engine.Dialogue2("Press Left if she goes.", 1.5f);
        yield return(new WaitForSeconds(0.5f));

        engine.Dialogue("Press Right if he goes.", 1.5f);
        yield return(new WaitForSeconds(1.5f));

        engine.PlayerGoFirst = true;
        while (true)
        {
            if (Input.GetKeyDown(KeyCode.LeftArrow))
            {
                engine.PlayerGoFirst = false;
                break;
            }
            else if (Input.GetKeyDown(KeyCode.RightArrow))
            {
                break;
            }
            yield return(null);
        }
        yield return(null);

        engine.Dialogue();
        engine.Dialogue2();
        yield return(new WaitForSeconds(1.0f));

        player.isAlone = true;
        bool choice = engine.PlayerGoFirst;

        if (choice)
        {
            Vector3 pos = new Vector3(105f, 23.56365f, -0.1f);
            Female  fem = Instantiate(_female_prefab, pos, Quaternion.identity) as Female;
            fem.gameObject.SetActive(true);
            tk2dSpriteAnimator anim = fem.GetComponent <tk2dSpriteAnimator>();
            yield return(null);

            anim.Play("she_idle");
            player.AutoMove(0, 0.3f);
            yield return(new WaitForSeconds(1.0f));

            fem.climbing = true;
            anim.Play("she_climb");
            yield return(new WaitForSeconds(1.0f));

            cam.FadeDark(1.0f);
            yield return(new WaitForSeconds(1.0f));

            player.AutoMove(0, 0);
            engine.Dialogue();
            _isDone = true;
        }
        else
        {
            Vector3 pos = new Vector3(105f, 25f, 0.1f);
            Female  fem = Instantiate(_female_prefab, pos, Quaternion.identity) as Female;
            fem.gameObject.SetActive(true);
            fem.climbing = true;
            engine.Dialogue2("Drat! My leg!", 1.0f);
            yield return(new WaitForSeconds(3.0f));

            engine.Dialogue2("Sorry. I'm slowing you down.", 1.0f);
            yield return(new WaitForSeconds(1.0f));

            engine.Dialogue("Everything's gonna be alright.", 1.0f);
            yield return(new WaitForSeconds(1.0f));

            engine.Dialogue2();
            yield return(new WaitForSeconds(1.0f));

            engine.Dialogue();

            boss.EndingPos(cam.transform.position.y);
            engine.endingBox.SetActive(true);
            yield return(new WaitForSeconds(2.0f));

            engine.Dialogue("Wait, what?", 0.8f);
            engine.lastTarget.SetActive(true);
            AudioManager.Instance.playSound(Sfx.LOCK, engine.lastTarget.transform.position);
            cam.chasing       = true;
            player.canControl = true;
            float lasttimer = 0;
            while (true)
            {
                lasttimer += Time.deltaTime;
                if (lasttimer > 5.0f)
                {
                    engine.Dialogue();
                    engine.endingBox.SetActive(false);
                    engine.lastTarget.SetActive(false);
                    boss.EndingShot(engine.lastTarget.transform.position);
                    fem.climbing = false;
                    yield return(new WaitForSeconds(0.3f));

                    player.Kill();
                    tk2dSpriteAnimator anim = fem.GetComponent <tk2dSpriteAnimator>();
                    anim.Play("she_death");
                    yield return(new WaitForSeconds(1.0f));

                    cam.FadeDark(1.0f);
                    yield return(new WaitForSeconds(3.0f));

                    engine.TryAgain = true;
                    Destroy(fem.gameObject);
                    cam.chasing               = false;
                    boss.force_stop           = true;
                    player.IsDead             = false;
                    player.freeze             = true;
                    player.transform.position = new Vector3(115.0f, 0.0f, 0.0f);
                    player.Halt();
                    break;
                }
                if (engine.GoodEnding)
                {
                    engine.Dialogue();
                    cam.Fade(Color.white, 0.1f);
                    yield return(new WaitForSeconds(1.0f));

                    engine.endingBox.SetActive(false);
                    engine.lastTarget.SetActive(false);
                    Destroy(fem.gameObject);
                    cam.chasing       = false;
                    player.canControl = false;
                    boss.force_stop   = true;
                    break;
                }
                yield return(null);
            }
            _isDone = true;
        }
        yield return(null);
    }