Advertisement
JojikYT

CameraShake

May 15th, 2022
2,454
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.20 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using Cinemachine;
  5. public class CameraShake : MonoBehaviour
  6. {
  7.     public static CameraShake Instance { get; private set; }
  8.     CinemachineVirtualCamera cinemachineVirtualCamera;
  9.     float shakerTimer;
  10.     float shakerTimerTotal;
  11.     float startingIntensity;
  12.     void Awake()
  13.     {
  14.         Instance = this;
  15.         cinemachineVirtualCamera = GetComponent<CinemachineVirtualCamera>();
  16.  
  17.     }
  18.  
  19.     public void ShakeCamera(float intensity, float time)
  20.     {
  21.         CinemachineBasicMultiChannelPerlin cinemachineBasicMultiChannelPerlin = cinemachineVirtualCamera.GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
  22.         cinemachineBasicMultiChannelPerlin.m_AmplitudeGain = intensity;
  23.  
  24.         startingIntensity = intensity;
  25.         shakerTimerTotal = time;
  26.         shakerTimer = time;
  27.     }
  28.  
  29.     private void Update()
  30.     {
  31.         if (shakerTimer > 0)
  32.         {
  33.             shakerTimer -= Time.deltaTime;
  34.             CinemachineBasicMultiChannelPerlin cinemachineBasicMultiChannelPerlin = cinemachineVirtualCamera.GetCinemachineComponent<CinemachineBasicMultiChannelPerlin>();
  35.             cinemachineBasicMultiChannelPerlin.m_AmplitudeGain = Mathf.Lerp(startingIntensity, 0f, 1f - shakerTimer / shakerTimerTotal);
  36.         }
  37.     }
  38. }
  39.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement