OldBlueWater/BlueWater/Assets/02.Scripts/VisualFeedbackManager.cs
NTG 498162d4a8 TimeScale 기능 VisualFeedbackManager로 이동
+ 전투 맵 수정
+ CombatPlayer MainSkillUi 초기화 오류 수정
+ 메뉴UI Close버튼 미작동 수정
+ HitStop과 SlowMotion 겹치는 문제 수정
2024-05-13 16:21:45 +09:00

81 lines
2.4 KiB
C#

using System.Collections;
using Cinemachine;
using MoreMountains.Feedbacks;
using MoreMountains.FeedbacksForThirdParty;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class VisualFeedbackManager : Singleton<VisualFeedbackManager>
{
private float baseTimeScale = 1f;
private float currentHitStopCoefficient = 1f;
public void SetBaseTimeScale(float value)
{
baseTimeScale = value;
UpdateTimeScale();
}
public void SetHitStop(float value)
{
currentHitStopCoefficient = value;
UpdateTimeScale();
}
public void ResetTimeScale()
{
baseTimeScale = 1f;
currentHitStopCoefficient = 1f;
UpdateTimeScale();
}
private void UpdateTimeScale()
{
Time.timeScale = baseTimeScale * currentHitStopCoefficient;
Time.fixedDeltaTime = Time.timeScale * 0.02f;
}
#region HitStop
/// <summary>
/// 히트스톱
/// </summary>
/// <param name="duration">시간</param>
public void TriggerHitStop(float duration)
{
StartCoroutine(HitStopCoroutine(duration));
}
private IEnumerator HitStopCoroutine(float duration)
{
SetHitStop(0.05f);
yield return new WaitForSecondsRealtime(duration);
SetHitStop(1f);
}
#endregion
#region CameraShake
public void CameraShake(CinemachineVirtualCamera virtualCamera, float power = 0.5f, float duration = 0.1f)
{
var mmfPlayer = virtualCamera.transform.gameObject.GetComponent<MMF_Player>();
var cinemachineImpulse = mmfPlayer.GetFeedbackOfType<MMF_CinemachineImpulse>();
var impulselistener = virtualCamera.transform.gameObject.GetComponent<CinemachineImpulseListener>();
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
}
}