Exemple #1
0
        void Update()
        {
            if (state != CamState.CutScene)
            {
                switch (state)
                {
                case CamState.PlayerFollow:
                    targetPos = player.position + dispFromPlayer;
                    break;

                case CamState.PorterPipe:
                    targetPos = GetCamPos(player.position, camDistZ, zFreeze);
                    break;
                }

                MoveTowardsTarget();
            }
            else
            {
                if (InputController.GetJump(InputStateType.JUST_PRESSED))
                {
                    StopCoroutine(cutSceneCoroutine);
                    state = oldState;
                    OnCutSceneEnd?.Invoke();
                    if (debug)
                    {
                        Debug.Log("Cutscene cancelled by Player.");
                    }
                }
            }
        }
Exemple #2
0
        private IEnumerator PlayCutScene(CutSceneTransition[] c)
        {
            oldState = state;
            state    = CamState.CutScene;

            if (debug)
            {
                Debug.Log("Starting CutScene with " + c.Length + " Transitions.");
            }

            for (int i = 0; i < c.Length; i++)
            {
                Vector3            previousPosition;
                Vector3            previousRotation;
                float              counter    = Time.timeSinceLevelLoad;
                CutSceneTransition transition = c[i];

                if (i == 0)
                {
                    previousPosition = transform.position;
                    previousRotation = transform.eulerAngles;
                }
                else
                {
                    previousPosition = c[i - 1].GetPos();
                    previousRotation = c[i - 1].GetRot();
                }

                while (Time.timeSinceLevelLoad - counter < transition.TimeToComplete)
                {
                    transform.position    = Vector3.Lerp(previousPosition, transition.GetPos(), (Time.timeSinceLevelLoad - counter) / transition.TimeToComplete);
                    transform.eulerAngles = GlobalMethods.LerpAngle(previousRotation, transition.GetRot(), (Time.timeSinceLevelLoad - counter) / transition.TimeToComplete);
                    yield return(null);

                    if (debug)
                    {
                        Debug.Log("Transition #" + i + " TimeLeft: " + (transition.TimeToComplete - (Time.timeSinceLevelLoad - counter)));
                    }
                }
            }

            state = oldState;
            OnCutSceneEnd?.Invoke();

            if (debug)
            {
                Debug.Log("Ending Cutscene");
            }
        }