Unity Camera Shake

Well a resource that i use frequently in my games to get a better game feel of some events is camera shake.

using UnityEngine;

public class CameraManager : MonoBehaviour
{
    private static bool _CameraShake;
    private static float _Strength;
    private static float _CameraShakeTime;
    private static Vector3 _OriginalPosition;

    public static Camera MainCamera;

    private void Awake()
    {
        MainCamera = Camera.main;
        _OriginalPosition = MainCamera.transform.localPosition;
    }

    private void Update()
    {
        if (_CameraShake && MainCamera.enabled)
        {
            Vector3 __randomVector = Random.insideUnitSphere;

            MainCamera.transform.localPosition = new Vector3(__randomVector.x * _Strength, __randomVector.y * _Strength, -10f) + _OriginalPosition;

            _CameraShakeTime -= Time.deltaTime;

            if (_CameraShakeTime <= 0)
            {
                StopShake();
            }
        }
    }

    public static void ShakeCamera(float p_duration, float p_strength)
    {
        _Strength = p_strength;
        _CameraShakeTime += p_duration;
        _CameraShakeTime = Mathf.Clamp(_CameraShakeTime, 0f, p_duration);

        _CameraShake = true;
    }

    public static void StopShake()
    {
        _CameraShake = false;
        _CameraShakeTime = 0f;

        MainCamera.transform.localPosition = _OriginalPosition;
    }
}

With this now anywhere in your code you can call for example: CameraManager.ShakeCamera(0.5f, 0.1f); to get your Camera Shake effect;