45 lines
No EOL
1.3 KiB
C#
45 lines
No EOL
1.3 KiB
C#
/*
|
|
* Author: Wai Lam
|
|
* Date: 6/2/25
|
|
* Description: Make the camera shake
|
|
*/
|
|
|
|
using UnityEngine;
|
|
|
|
public class CameraShake : MonoBehaviour
|
|
{
|
|
[SerializeField] private float shakeMagnitude = 0.05f;
|
|
[SerializeField] private bool isShaking; // Toggle shaking on/off
|
|
|
|
private Transform _cameraOffsetTransform;
|
|
private Vector3 _originalLocalPos;
|
|
|
|
private void Start()
|
|
{
|
|
_cameraOffsetTransform = transform; // Attach this script to Camera Offset
|
|
_originalLocalPos = _cameraOffsetTransform.localPosition;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (isShaking)
|
|
_cameraOffsetTransform.localPosition = _originalLocalPos + Random.insideUnitSphere * shakeMagnitude;
|
|
else
|
|
_cameraOffsetTransform.localPosition = _originalLocalPos; // Reset when not shaking
|
|
}
|
|
|
|
// Public methods to enable/disable shaking dynamically
|
|
// ReSharper disable once UnusedMember.Global
|
|
public void StartShaking(float magnitude = -1)
|
|
{
|
|
if (magnitude > 0) shakeMagnitude = magnitude;
|
|
isShaking = true;
|
|
}
|
|
|
|
// ReSharper disable once UnusedMember.Global
|
|
public void StopShaking()
|
|
{
|
|
isShaking = false;
|
|
_cameraOffsetTransform.localPosition = _originalLocalPos; // Ensure reset
|
|
}
|
|
} |