/* * IEnumerator FadeInFadeOut(CameraAndMask fadeIn, CameraAndMask fadeOut, float time) * { * float startTime = Time.timeSinceLevelLoad; * float diff = Time.timeSinceLevelLoad - startTime; * Color maskAlpha = new Color(0, 0, 0, 0); * * while (diff < (time / 2f)) * { * diff = Time.timeSinceLevelLoad - startTime; * maskAlpha.a = diff / (time / 2); * fadeIn.mask.color = maskAlpha; * yield return null; * } * fadeIn.camera.SetActive(false); * guideObjct.SetActive(false); * * playerCharacter.SetActive(!playerCharacter.activeInHierarchy); * cutSceneP1.SetActive(!cutSceneP1.activeInHierarchy); * cutSceneP2.SetActive(!cutSceneP2.activeInHierarchy); * * StringView.Instance.cutP1 = P1Pivot.transform; * StringView.Instance.cutP2 = P2Pivot.transform; * * for (int i = 0; i < targetObjcts.Length; i++) * { * targetObjcts[i].SetActive(true); * } * CutSceneCamera[cameraIndex].camera.transform.LookAt(targetTransform); * StringView.Instance.isPlayCutScene = !StringView.Instance.isPlayCutScene; * SoundManager.Instance.StopBGM("asioto"); * fadeOut.camera.SetActive(true); * * startTime = Time.timeSinceLevelLoad; * diff = Time.timeSinceLevelLoad - startTime; * while (diff < time / 2) * { * diff = Time.timeSinceLevelLoad - startTime; * maskAlpha.a = 1 - (diff / (time / 2)); * fadeOut.mask.color = maskAlpha; * yield return null; * } * } */ protected override IEnumerator Boot() { int beforeAnimHash = cutAnim.GetCurrentAnimatorStateInfo(0).shortNameHash; if (isOn == false) { isOn = true; cutAnim.SetTrigger(cut.ToString()); //if (guideObjct != null && nextMonument != null) nextMonument.Guid(); InputController.ExtendMaxDistanceLength(extendLength); } else if (guideObjct != null && guideObjct.activeInHierarchy == true) { guideObjct.SetActive(false); } bool cutChange = true; if (cutChange) { for (int i = 0; i < CutSceneCamera.Length - 1; i++) { while ( cutAnim.GetCurrentAnimatorStateInfo(0).shortNameHash == beforeAnimHash || cutAnim.GetCurrentAnimatorStateInfo(0).normalizedTime < 1)//発生させたいフレーム/アニメーションの総フレーム数 { if (cut.ToString() == "Cut3") { CutSceneCamera[cameraIndex].camera.transform.LookAt(targetTransform); } for (int j = 0; j < pt.Length; j++) { if (cutAnim.GetCurrentAnimatorStateInfo(0).normalizedTime < (pt[j].playParticleFrame / totalFrame)) { for (int k = 0; k < pt[j].particle.Length; k++) { pt[j].particle[k].Play(); } } } yield return(null); } beforeAnimHash = cutAnim.GetCurrentAnimatorStateInfo(0).shortNameHash; if (cameraIndex < CutSceneCamera.Length - 1) { CutSceneCamera[cameraIndex].camera.SetActive(false); cameraIndex++; CutSceneCamera[cameraIndex].camera.SetActive(true); cutAnim.SetTrigger("Next"); } } if (cut == CUT.ED) { while ( cutAnim.GetCurrentAnimatorStateInfo(0).shortNameHash == beforeAnimHash || cutAnim.GetCurrentAnimatorStateInfo(0).normalizedTime < (750 / totalFrame))//発生させたいフレーム/アニメーションの総フレーム数 { //flash.transform.localScale += new Vector3(0.5f, 0.5f, 0.5f); if (pulse.baseScale.x > 0) { pulse.baseScale -= new Vector3(0.01f, 0.01f, 0.01f); } yield return(null); } while ( cutAnim.GetCurrentAnimatorStateInfo(0).shortNameHash == beforeAnimHash || cutAnim.GetCurrentAnimatorStateInfo(0).normalizedTime < (860 / totalFrame))//発生させたいフレーム/アニメーションの総フレーム数 { flash._limitScale += new Vector3(0.1f, 0.1f, 0.1f); flash.transform.localScale += new Vector3(0.1f, 0.1f, 0.1f); yield return(null); } yield return(StartCoroutine(WhiteIn(CutSceneCamera[cameraIndex], 2f))); flash._limitScale = new Vector3(0f, 0f, 0f); flash.transform.localScale = new Vector3(0f, 0f, 0f); //flash.transform yield return(new WaitForSeconds(1f)); yield return(StartCoroutine(WhiteOut(CutSceneCamera[cameraIndex], 1f))); } while ( cutAnim.GetCurrentAnimatorStateInfo(0).shortNameHash == beforeAnimHash || cutAnim.GetCurrentAnimatorStateInfo(0).normalizedTime < (playParticleFrame / totalFrame))//発生させたいフレーム/アニメーションの総フレーム数 { CutSceneCamera[cameraIndex].camera.transform.LookAt(targetTransform); for (int j = 0; j < pt.Length; j++) { if (cutAnim.GetCurrentAnimatorStateInfo(0).normalizedTime < (pt[j].playParticleFrame / totalFrame)) { for (int k = 0; k < pt[j].particle.Length; k++) { pt[j].particle[k].Play(); } } } yield return(null); } } else { while ( cutAnim.GetCurrentAnimatorStateInfo(0).shortNameHash == Animator.StringToHash("New State") || cutAnim.GetCurrentAnimatorStateInfo(0).normalizedTime < (40f / 45f))//発生させたいフレーム/アニメーションの総フレーム数 { yield return(null); } } if (particle != null) { SoundManager.Instance.PlaySE("se object"); particle.Play(); } for (int i = 0; i < targetObjcts.Length; i++) { targetObjcts[i].SetActive(false); } }