You've already forked taptap2024_GJ_chidouren
init
This commit is contained in:
98
Assets/Scripts/System/CameraImpulseUtils.cs
Normal file
98
Assets/Scripts/System/CameraImpulseUtils.cs
Normal file
@@ -0,0 +1,98 @@
|
||||
using Cinemachine;
|
||||
using Framework.Utils;
|
||||
using Framework.Utils.SingletonTemplate;
|
||||
using UnityEngine;
|
||||
using CameraType = Framework.Utils.CameraType;
|
||||
|
||||
namespace System
|
||||
{
|
||||
public class CameraImpulseUtils : MgrBase<CameraImpulseUtils>
|
||||
{
|
||||
protected override void OnCreateMge()
|
||||
{
|
||||
var camera = CameraGroup.Instance.GetCamera(CameraType.Base);
|
||||
// if (camera.GetComponent<CinemachineImpulseSource>() == null)
|
||||
// {
|
||||
// this._cineMachineNormalImpulseSource = camera.gameObject.AddComponent<CinemachineImpulseSource>();
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// this._cineMachineNormalImpulseSource = camera.GetComponent<CinemachineImpulseSource>();
|
||||
// }
|
||||
this._cineMachineLegacyImpulseSource = camera.transform.Find("ImpulsLegacy").GetComponent<CinemachineImpulseSource>();
|
||||
this._cineMachineNormalImpulseSource = camera.transform.Find("ImpulsNormal").GetComponent<CinemachineImpulseSource>();
|
||||
}
|
||||
|
||||
private CinemachineImpulseSource _cineMachineLegacyImpulseSource;
|
||||
private CinemachineImpulseSource _cineMachineNormalImpulseSource;
|
||||
|
||||
/// <summary>
|
||||
/// 设置默认震动方向
|
||||
/// </summary>
|
||||
/// <param name="vector"></param>
|
||||
public void SetDefaultImpulseVector(Vector3 vector)
|
||||
{
|
||||
this._cineMachineNormalImpulseSource.m_DefaultVelocity = vector;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 简易自定义震动
|
||||
/// </summary>
|
||||
/// <param name="time"></param>
|
||||
/// <param name="vector"></param>
|
||||
/// <param name="scale"></param>
|
||||
/// <param name="impulseTypes"></param>
|
||||
/// <param name="impulseShapes"></param>
|
||||
public void SampleImpulseCamera(float time, Vector3 vector, float scale, CinemachineImpulseDefinition.ImpulseTypes impulseTypes, CinemachineImpulseDefinition.ImpulseShapes impulseShapes)
|
||||
{
|
||||
this._cineMachineNormalImpulseSource.m_ImpulseDefinition.m_ImpulseDuration = time;
|
||||
this._cineMachineNormalImpulseSource.m_ImpulseDefinition.m_ImpulseType = impulseTypes;
|
||||
this._cineMachineNormalImpulseSource.m_ImpulseDefinition.m_ImpulseShape = impulseShapes;
|
||||
this._cineMachineNormalImpulseSource.GenerateImpulse(vector.normalized * scale);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 持续震动
|
||||
/// </summary>
|
||||
/// <param name="time"></param>
|
||||
/// <param name="scale"></param>
|
||||
public void UniformImpulseCamera(float time, float scale = 1, float inTime = 0, float outTime = 0 )
|
||||
{
|
||||
if (time <= 0 || scale == 0)
|
||||
{
|
||||
CinemachineImpulseManager.Instance.Clear();
|
||||
return;
|
||||
}
|
||||
this._cineMachineLegacyImpulseSource.m_ImpulseDefinition.m_ImpulseDuration = time;
|
||||
// this._cineMachineLegacyImpulseSource.m_ImpulseDefinition.m_ImpulseType = CinemachineImpulseDefinition.ImpulseTypes.Legacy;
|
||||
this._cineMachineLegacyImpulseSource.m_ImpulseDefinition.m_DissipationMode = CinemachineImpulseManager.ImpulseEvent.DissipationMode.SoftDecay;
|
||||
this._cineMachineLegacyImpulseSource.m_ImpulseDefinition.m_TimeEnvelope = new CinemachineImpulseManager.EnvelopeDefinition()
|
||||
{
|
||||
m_AttackTime = inTime,
|
||||
m_DecayTime = outTime,
|
||||
m_SustainTime = time,
|
||||
};
|
||||
this._cineMachineLegacyImpulseSource.GenerateImpulse(scale);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 爆炸性震动
|
||||
/// </summary>
|
||||
/// <param name="time"></param>
|
||||
/// <param name="scale"></param>
|
||||
public void ExplosionImpulseCamera(float time, float scale = 1, float inTime = 0, float outTime = 0 )
|
||||
{
|
||||
this._cineMachineLegacyImpulseSource.m_ImpulseDefinition.m_ImpulseDuration = time;
|
||||
// this._cineMachineLegacyImpulseSource.m_ImpulseDefinition.m_ImpulseType = CinemachineImpulseDefinition.ImpulseTypes.Legacy;
|
||||
this._cineMachineLegacyImpulseSource.m_ImpulseDefinition.m_DissipationMode = CinemachineImpulseManager.ImpulseEvent.DissipationMode.ExponentialDecay;
|
||||
// this._cineMachineLegacyImpulseSource.m_ImpulseDefinition.m_RawSignal = ;
|
||||
this._cineMachineLegacyImpulseSource.m_ImpulseDefinition.m_TimeEnvelope = new CinemachineImpulseManager.EnvelopeDefinition()
|
||||
{
|
||||
m_AttackTime = inTime,
|
||||
m_DecayTime = outTime,
|
||||
m_SustainTime = time,
|
||||
};
|
||||
this._cineMachineLegacyImpulseSource.GenerateImpulse(scale);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user