33 lines
827 B
C#
33 lines
827 B
C#
using System.Collections;
|
|
using UnityEngine;
|
|
|
|
public class CameraShake : MonoBehaviour
|
|
{
|
|
private Vector3 originalPosition;
|
|
|
|
public void Shake(float duration, float magnitude)
|
|
{
|
|
StopAllCoroutines();
|
|
originalPosition = transform.localPosition;
|
|
StartCoroutine(ShakeCoroutine(duration, magnitude));
|
|
}
|
|
|
|
private IEnumerator ShakeCoroutine(float duration, float magnitude)
|
|
{
|
|
float elapsed = 0f;
|
|
|
|
while (elapsed < duration)
|
|
{
|
|
float x = Random.Range(-1f, 1f) * magnitude;
|
|
float y = Random.Range(-1f, 1f) * magnitude;
|
|
|
|
transform.localPosition = originalPosition + new Vector3(x, y, 0);
|
|
|
|
elapsed += Time.deltaTime;
|
|
yield return null;
|
|
}
|
|
|
|
transform.localPosition = originalPosition;
|
|
}
|
|
}
|