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;