Пример #1
0
    private IEnumerator TransitionFromDownTheRabbitHole(DownTheRabbitHole rabbitHole)
    {
        State          = SceneState.TransitioningTo;
        Alice          = rabbitHole.Alice;
        MainCamera     = rabbitHole.MainCamera;
        GradientSkybox = rabbitHole.GradientSkybox;

        while (rabbitHole.State != SceneState.Complete)
        {
            yield return(new WaitForEndOfFrame());
        }

        GradientSkybox.ChangeColor(1, Ground);
        GradientSkybox.ChangeColor(2, Sky);
        GradientSkybox.ChangeIntensity(1, 3);

        ActivateObjects();

        Joker.StartCoroutine(Joker.MoveTo(Joker.transform.position + new Vector3(0, 0, 5)));
        Joker.StartCoroutine(Joker.LookAt(Alice.transform.position, Vector3.up));

        while (Joker.IsMoving)
        {
            yield return(new WaitForEndOfFrame());
        }

        MainCamera.StartCoroutine(MainCamera.Follow(Alice.gameObject, PositionOffsets[0]));
        MainCamera.StartCoroutine(MainCamera.Track(Alice.gameObject, LookPositionOffsets[0]));

        State = SceneState.Active;
        StartCoroutine(Game());
    }
Пример #2
0
    private IEnumerator TransitionFromFlowerGarden(FlowerGarden flowerGarden)
    {
        State          = SceneState.TransitioningTo;
        Alice          = flowerGarden.Alice;
        MainCamera     = flowerGarden.MainCamera;
        GradientSkybox = flowerGarden.GradientSkybox;

        while (flowerGarden.State != SceneState.Complete)
        {
            yield return(new WaitForEndOfFrame());
        }

        GradientSkybox.ChangeColor(1, Ground);
        GradientSkybox.ChangeColor(2, Sky);
        GradientSkybox.ChangeIntensity(1, 3);

        Alice.Animator.SetBool("IsMoving", false);
        ActivateObjects();
        Star = SceneObjects[2];
        Star.SetActive(false);

        Joker.StartCoroutine(Joker.MoveTo(Joker.transform.position + new Vector3(0, 0, 5)));
        Joker.StartCoroutine(Joker.LookAt(Alice.transform.position, Vector3.up));

        while (Joker.IsMoving)
        {
            yield return(new WaitForEndOfFrame());
        }

        MainCamera.StartCoroutine(MainCamera.Follow(Alice.gameObject, PositionOffsets[0]));
        MainCamera.StartCoroutine(MainCamera.Track(Alice.gameObject, LookPositionOffsets[0]));

        State = SceneState.Active;
        StartCoroutine(Game());
    }
    private IEnumerator TransitionFromOpening(Opening opening)
    {
        State          = SceneState.TransitioningTo;
        Alice          = opening.Alice;
        MainCamera     = opening.MainCamera;
        GradientSkybox = opening.GradientSkybox;

        ActivateObjects();
        var triggerFlower = SceneObjects[0].GetComponent <Flower>();

        while (opening.State != SceneState.Complete)
        {
            yield return(new WaitForEndOfFrame());
        }

        while (MainCamera.IsMoving)
        {
            yield return(new WaitForEndOfFrame());
        }

        GradientSkybox.ChangeIntensity(10);
        GradientSkybox.ChangeIntensity(0, FallTime);

        MainCamera.StartCoroutine(MainCamera.RotateAround(Alice.transform.position, PositionOffsets[0]));
        MainCamera.StartCoroutine(MainCamera.Track(Alice.gameObject, LookPositionOffsets[0]));

        while (GradientSkybox.Intensity > 0)
        {
            yield return(new WaitForEndOfFrame());
        }

        Alice.Animator.SetBool("IsMoving", false);
        Alice.Animator.SetBool("IsFalling", false);
        yield return(new WaitForSeconds(2));

        State = SceneState.Active;
        triggerFlower.transform.position = Alice.transform.position + new Vector3(2, 0, 1);
        triggerFlower.StartCoroutine(triggerFlower.Grow());
    }
Пример #4
0
    private IEnumerator TransitionFromQueenOfHearts(QueenOfHearts queenOfHearts)
    {
        State          = SceneState.TransitioningTo;
        Alice          = queenOfHearts.Alice;
        MainCamera     = queenOfHearts.MainCamera;
        GradientSkybox = queenOfHearts.GradientSkybox;

        while (queenOfHearts.State != SceneState.Complete)
        {
            yield return(new WaitForEndOfFrame());
        }

        Alice.Animator.Play("Sleeping");
        Alice.transform.position = new Vector3(9.3f, 0, 8.5f);
        var lookDir = new Vector3(-1, 0, -0.5f).normalized;

        Alice.StartCoroutine(Alice.LookAt(Alice.transform.position + lookDir, Vector3.up));

        var rabbitHole = new Vector3(3.4f, 0.9f, 21.4f);

        MainCamera.transform.position = rabbitHole;
        MainCamera.transform.LookAt(Alice.transform.position, Vector3.up);

        ActivateObjects();

        GradientSkybox.ChangeIntensity(1);
        GradientSkybox.ChangeColor(1, Ground);
        GradientSkybox.ChangeColor(2, Sky);

        MainCamera.StartCoroutine(MainCamera.MoveTo(PositionOffsets[0]));
        MainCamera.StartCoroutine(MainCamera.Track(Alice.gameObject, LookPositionOffsets[0]));

        while (MainCamera.IsMoving)
        {
            yield return(new WaitForEndOfFrame());
        }

        MainCamera.StartCoroutine(MainCamera.RotateAround(Alice.transform.position, PositionOffsets[1]));
        MainCamera.StartCoroutine(MainCamera.Track(Alice.gameObject, LookPositionOffsets[1]));

        yield return(new WaitForSeconds(5));

        Application.Quit();
    }
Пример #5
0
    private IEnumerator TransitionFromDownTheRabbitHole(DownTheRabbitHole rabbitHole)
    {
        State          = SceneState.TransitioningTo;
        Alice          = rabbitHole.Alice;
        MainCamera     = rabbitHole.MainCamera;
        GradientSkybox = rabbitHole.GradientSkybox;

        while (rabbitHole.State != SceneState.Complete)
        {
            yield return(new WaitForEndOfFrame());
        }

        var triggerFlower = SceneObjects[0].GetComponent <Flower>();

        triggerFlower.gameObject.SetActive(true);
        triggerFlower.StartCoroutine(triggerFlower.Shrink());

        GradientSkybox.ChangeColor(1, Ground);
        GradientSkybox.ChangeColor(2, Sky);
        GradientSkybox.ChangeIntensity(1, 2);

        MainCamera.StartCoroutine(MainCamera.MoveTo(Alice.transform.position + Vector3.up * 5));
        MainCamera.StartCoroutine(MainCamera.Track(Alice.gameObject, LookPositionOffsets[0]));


        while (GradientSkybox.Intensity < 1)
        {
            yield return(new WaitForEndOfFrame());
        }

        ActivateObjects();

        while (Alice.IsMoving)
        {
            yield return(new WaitForEndOfFrame());
        }

        MainCamera.StartCoroutine(MainCamera.RotateAround(Alice.transform.position, PositionOffsets[0]));

        State = SceneState.Active;
        StartCoroutine(Game());
    }
Пример #6
0
    public override bool Construct(string pastSceneName)
    {
        State = SceneState.TransitioningTo;

        ActivateObjects();

        Alice.Animator.Play("Sleeping");
        Alice.transform.position = new Vector3(9.3f, 0, 8.5f);
        var lookDir = new Vector3(-1, 0, -0.5f).normalized;

        Alice.transform.LookAt(Alice.transform.position + lookDir, Vector3.up);

        GradientSkybox.ChangeIntensity(1);
        GradientSkybox.ChangeColor(1, Ground);
        GradientSkybox.ChangeColor(2, Sky);

        State = SceneState.Active;

        StartCoroutine(Game());
        return(true);
    }
Пример #7
0
    private IEnumerator Game()
    {
        SpawnCard(3, Joker.transform.position + Vector3.right * 5);
        SpawnCard(7, Joker.transform.position + Vector3.left * 5);

        while (Card.Complete != true)
        {
            yield return(new WaitForEndOfFrame());
        }
        Card.Reset();

        GradientSkybox.ChangeColor(1, Sky, 3);
        GradientSkybox.ChangeColor(2, Ground, 3);

        SpawnCard(2, Joker.transform.position + Vector3.right * 5 + Vector3.up * 0);
        SpawnCard(3, Joker.transform.position + Vector3.down * 5 + Vector3.up * 0);
        SpawnCard(4, Joker.transform.position + Vector3.up * 5 + Vector3.up * 0);
        SpawnCard(5, Joker.transform.position + Vector3.down * 5 + Vector3.left * 5);
        SpawnCard(6, Joker.transform.position + Vector3.down * 5 + Vector3.right * 5);
        SpawnCard(7, Joker.transform.position + Vector3.left * 5 + Vector3.up * 0);
        SpawnCard(8, Joker.transform.position + Vector3.right * 5 + Vector3.up * 5);
        SpawnCard(9, Joker.transform.position + Vector3.left * 5 + Vector3.up * 5);

        while (Card.Complete != true)
        {
            yield return(new WaitForEndOfFrame());
        }
        Card.Reset();

        GradientSkybox.ChangeColor(1, Ground, 3);
        GradientSkybox.ChangeColor(2, Sky, 3);

        Joker.StartCoroutine(Joker.LookAt(Joker.transform.position + Vector3.forward, Vector3.up));
        Joker.StartCoroutine(Joker.MoveTo(Alice.transform.position + Vector3.forward * 10));

        while (Joker.IsMoving)
        {
            yield return(new WaitForEndOfFrame());
        }

        Joker.transform.Find("Card").Find("FrontFace").GetComponent <Renderer>().material = CardMaterials[11];
        Joker.StartCoroutine(Joker.LookAt(Alice.transform.position + Vector3.back, Vector3.up));

        var scale = 4f;

        for (var i = 0f; i < 1; i += Time.deltaTime)
        {
            yield return(new WaitForEndOfFrame());

            Joker.transform.localScale = Vector3.Lerp(Joker.transform.localScale,
                                                      new Vector3(1.8f * scale, 2.5f * scale, 1 * scale), i);
        }

        GradientSkybox.DoTunnel();
        GradientSkybox.ChangeIntensity(100, 25);

        Star.SetActive(true);
        Joker.StartCoroutine(Joker.LookAt(Alice.transform.position, Vector3.up));
        Joker.Animator.Play("Run");
        Joker.Animator.speed = 2;
        MainCamera.StartCoroutine(MainCamera.MoveTo(PositionOffsets[1]));
        MainCamera.StartCoroutine(MainCamera.Track(Alice.gameObject, LookPositionOffsets[1]));
        Alice.StartCoroutine(Alice.LookAt(Alice.transform.position + Vector3.back, Vector3.up));
        Alice.Animator.SetBool("IsMoving", true);
        Alice.Animator.speed = 2;
    }