using System.Collections; using System.Collections.Generic; using Cinemachine; using MoreMountains.Feedbacks; using MoreMountains.FeedbacksForThirdParty; using UnityEngine; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public class VisualFeedbackManager : Singleton { #region HitStop /// /// 히트스톱 /// /// 시간 public void TriggerHitStop(float duration) { StartCoroutine(HitStopCoroutine(duration)); } private IEnumerator HitStopCoroutine(float duration) { var originalTimeScale = 1; Time.timeScale = 0.05f; yield return new WaitForSecondsRealtime(duration); Time.timeScale = originalTimeScale; } #endregion #region CameraShake public void CameraShake(CinemachineVirtualCamera virtualCamera, float power = 0.5f, float duration = 0.1f) { var mmfPlayer = virtualCamera.transform.gameObject.GetComponent(); var cinemachineImpulse = mmfPlayer.GetFeedbackOfType(); var impulselistener = virtualCamera.transform.gameObject.GetComponent(); cinemachineImpulse.Velocity = new Vector3(0.5f, 0.5f, 0.5f); impulselistener.m_Gain = power; cinemachineImpulse.m_ImpulseDefinition.m_TimeEnvelope.m_SustainTime = duration; cinemachineImpulse.m_ImpulseDefinition.m_TimeEnvelope.m_DecayTime = 0.2f; mmfPlayer.PlayFeedbacks(); } #endregion } }