// Start is called before the first frame update public override void Start() { base.Start(); if (!audioSource) Debug.LogError("TutorialB: AudioSource not found!"); if (!transitionIntroSound) Debug.LogError("TutorialB: Audio clip \"transition intro\" not found!"); if (!transitionOutroSound) Debug.LogError("TutorialB: Audio clip \"Transition Outro\" not found!"); baseTransitionPitch = audioSource.pitch; // Finding slide scripts, to interact directly with slideScripts = new TutorialBSlide[activeSlides.Count]; for (int i = 0; i < slideScripts.Length; i++) { slideScripts[i] = activeSlides[i].GetComponent<TutorialBSlide>(); slideScripts[i].Initiate(); } transitionSlideScript = transitionSlide.GetComponent<TutorialBSlide>(); transitionSlideScript.Initiate(); winningSlideScript = winningSlide.GetComponent<TutorialBSlide>(); winningSlideScript.Initiate(); // Show the first slide! activeSlides[0].SetActive(true); }
public override void TriggerWinSlide() { if (!isActiveAndEnabled) return; base.TriggerWinSlide(); winningOutro = true; winningIntro = false; fadeScript = slideScripts[currentState]; PlaySound(transitionOutroSound); }
public override void TriggerNextSlide(int nextState) { if (!isActiveAndEnabled) return; base.TriggerNextSlide(nextState); transitionProgress = 1; outro = true; intro = false; middleIntro = false; middleOutro = false; winningOutro = false; winningIntro = false; fadeScript = slideScripts[currentState]; PlaySound(transitionOutroSound); // Debug.Log("Trigger next slide: starting outro - current: "+currentState+", next: "+nextState); }
// Update is called once per frame public override void Update() { base.Update(); // While transition in progress if (IsTransitioning()) { // Outro for previous slide or transition-slide if (outro || middleOutro || winningOutro) { if (transitionProgress > 0) transitionProgress -= Time.deltaTime * transitionFadeSpeed; if (transitionProgress <= 0) { transitionProgress = 0; // Trigger intro for transition-slide if (outro) { outro = false; middleIntro = true; fadeScript.gameObject.SetActive(false); fadeScript = transitionSlideScript; fadeScript.gameObject.SetActive(true); // Debug.Log("Outro done, starting middle-intro"); // Trigger intro for next slide } else if (middleOutro) { middleOutro = false; intro = true; fadeScript.gameObject.SetActive(false); fadeScript = slideScripts[nextState]; fadeScript.gameObject.SetActive(true); // Debug.Log("Middle Outro done, starting intro"); PlaySound(transitionIntroSound); // Trigger intro for winning slide } else if (winningOutro) { winningOutro = false; winningIntro = true; fadeScript.gameObject.SetActive(false); fadeScript = winningSlideScript; fadeScript.gameObject.SetActive(true); // Debug.Log("Winning Outro done, starting Winning Intro"); } } // fadeScript.SetAlpha(transitionAlpha); fadeScript.SetTransitionPosition(1 - transitionProgress); } // Intro for transition-slide or next slide else if (intro || middleIntro || winningIntro) { if (transitionProgress < 1) transitionProgress += Time.deltaTime * transitionFadeSpeed; if (transitionProgress >= 1) { transitionProgress = 1; // Transition is all done! if (intro) { intro = false; ArrivedAtSlide(nextState); // Debug.Log("Intro done, arrived at next state! "+nextState); // Trigger outro for transition-slide } else if (middleIntro) { middleIntro = false; middleOutro = true; // Stop fading because at win-state } else if (winningIntro) { winningIntro = false; atWinState = true; // Debug.Log("Winning Intro done, THE END"); } } // Update alpha for whatever slide is active // fadeScript.SetAlpha(transitionAlpha); fadeScript.SetTransitionPosition(1 - transitionProgress); } } }