3DTD/Assets/Scripts/Camera/CameraShake.cs

41 lines
999 B
C#

using Cinemachine;
using UnityEngine;
public class CameraShake : MonoBehaviour
{
[SerializeField]private CinemachineFreeLook v_Camera;
private float shakeTimer;
public static CameraShake Instance;
private void Start()
{
if (Instance != this)
Destroy(Instance);
Instance = this;
}
public void ShakeCamera(float intensity, float time)
{
CinemachineBasicMultiChannelPerlin multiChannelPerlin = v_Camera.GetComponent<CinemachineBasicMultiChannelPerlin>();
multiChannelPerlin.m_AmplitudeGain = intensity;
shakeTimer = time;
}
private void Update()
{
if (shakeTimer > 0)
{
shakeTimer -= Time.deltaTime;
if (shakeTimer <= 0f)
{
CinemachineBasicMultiChannelPerlin multiChannelPerlin = v_Camera.GetComponent<CinemachineBasicMultiChannelPerlin>();
multiChannelPerlin.m_AmplitudeGain = 0f;
}
}
}
}