41 lines
999 B
C#
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;
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|