Spirinaut/Assets/Scripts/ScreenshakeHandler.cs
Gerard Gascón 8103d0d89d init
2025-04-24 14:15:32 +02:00

35 lines
973 B
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Cinemachine;
public class ScreenshakeHandler : MonoBehaviour{
[SerializeField] private CinemachineVirtualCamera cam;
private static CinemachineBasicMultiChannelPerlin noise;
private static float timer = 0;
void Start(){
noise = cam.GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
}
void Update(){
timer -= Time.deltaTime;
if (timer <= 0){
timer = 0;
noise.m_AmplitudeGain = 0;
noise.m_FrequencyGain = 0;
}
}
public static void AddScreenShake(float amplitude, float frequency, float duration){
//Prevents small shakes from overriding big ones
if (amplitude < noise.m_AmplitudeGain || frequency < noise.m_FrequencyGain) return;
noise.m_AmplitudeGain = amplitude;
noise.m_FrequencyGain = frequency;
timer = duration;
}
}