+ 전투 맵 수정 + CombatPlayer MainSkillUi 초기화 오류 수정 + 메뉴UI Close버튼 미작동 수정 + HitStop과 SlowMotion 겹치는 문제 수정
81 lines
2.4 KiB
C#
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
|
|
}
|
|
}
|