//CinemachineVirtualCamera StockPreviousCam = null; void Start() { _instance = this; cameraObj = Camera.main; cameraBrain = GameObject.FindObjectOfType <CinemachineBrain>(); currentSequence = sequences[0]; blenderSettings = ScriptableObject.CreateInstance("CinemachineBlenderSettings") as CinemachineBlenderSettings; }
/// <summary> /// Passes to the next sequence. Does nothing is no sequence is left /// </summary> public void NextSequence() { if (currentSequence.cutsSlowMoOnEnd) { C_TimeScale.Instance.ForceStopSlowMo(); } GameObject.FindObjectOfType <C_CameraRail>().bFeedbckActivated = currentSequence.bEnableCamFeedback; GameObject.FindObjectOfType <C_CameraRail>().FeedbackTransition(currentSequence.bEnableCamTransition, currentSequence.fSpeedTransition); if (currentSequence.hasEventOnEnd) { switch (currentSequence.seqEvent) { case M_Sequence.SequenceEndEventType.SlowMo: TriggerUtil.TriggerSlowMo(currentSequence.tTimeBeforeEvent, currentSequence.slowMoDuration, currentSequence.slowMoPower); break; case M_Sequence.SequenceEndEventType.Activation: TriggerUtil.TriggerActivation(currentSequence.tTimeBeforeEvent, currentSequence.affected, currentSequence.isActivation); break; case M_Sequence.SequenceEndEventType.Sound: TriggerUtil.TriggerSound(currentSequence.tTimeBeforeEvent, currentSequence.soundPlayed, currentSequence.volume); break; case M_Sequence.SequenceEndEventType.Animation: TriggerUtil.TriggerAnimationsFromTags(currentSequence.tTimeBeforeEvent, currentSequence.tagsAnimated); break; default: break; } } if (sequenceIndex < sequences.Count - 1) { sequenceIndex++; isWaitingTimer = false; currentSequence = sequences[sequenceIndex]; //Debug.Log(currentVirtualCamera); //CREATION DU NOUVEAU BLEND CinemachineBlendDefinition blendDef = new CinemachineBlendDefinition { m_Style = currentSequence.animationStyle, m_Time = currentSequence.fAnimationTime }; //SETUP BLEND CinemachineBlenderSettings.CustomBlend blend = new CinemachineBlenderSettings.CustomBlend { m_From = currentVirtualCamera.Name, m_To = currentSequence.vCamTargetName, m_Blend = blendDef }; blenderSettings.m_CustomBlends[0] = blend; cameraBrain.m_CustomBlends = blenderSettings; //CHANGEMENT DE CAM currentVirtualCamera.Priority = 10; PastCamPos = currentVirtualCamera.transform.position; currentVirtualCamera = GameObject.Find(currentSequence.vCamTargetName).GetComponent <CinemachineVirtualCamera>(); currentVirtualCamera.Priority = 11; NewCamPos = currentVirtualCamera.transform.position; //APPEL DE FONCTIONS DANS LES CHARGEURS C_Charger[] _Chargeurs = GameObject.FindObjectsOfType <C_Charger>(); for (int i = 0; i < _Chargeurs.Length; i++) { _Chargeurs[i].PlayerChangePosition(); } C_Shooter[] _Shooter = GameObject.FindObjectsOfType <C_Shooter>(); for (int i = 0; i < _Shooter.Length; i++) { _Shooter[i].PlayerChangePosition(); } fDelayOnBlendSequence = currentSequence.fAnimationTime + (currentSequence.sequenceType == M_Sequence.SequenceType.Timer ? currentSequence.fTimeSequenceDuration : 0); enemiesKilled = 0; //DECLENCHEMENT DU FEEDBACK DE CAM if (GameObject.FindObjectOfType <C_CameraRail>()) { GameObject.FindObjectOfType <C_CameraRail>().ChangeSpeedMoving(Vector3.Distance(PastCamPos, NewCamPos) / 5 / fDelayOnBlendSequence, 50); } if (currentSequence.sequenceType == M_Sequence.SequenceType.KillEnnemies) { if (currentSequence.bAcceptsBufferKill) { enemiesKilled = bufferedKills; } bufferedKills = 0; } } else { Debug.Log("No sequence left"); readSequences = false; } }