kerimdeveci
5/31/2019 - 12:04 PM

Unity Camera Shake

Unity Camera Shake

public class CameraShake : MonoBehaviour
    {
        private void Start()
        {
            StartCoroutine(Shake(10, 4));
        }

        public IEnumerator Shake(float duration, float magnitude)
        {
            Vector3 originalPosition = transform.position;
            //how much time elapsed sinse the first shake
            float elapsed = 0.0f;

            while (elapsed < duration)
            {
                float x = Random.Range(-1, 1) * magnitude;
                float y = Random.Range(-1, 1) * magnitude;
                float z = Random.Range(-1, 1) * magnitude;
            
                transform.localPosition = new Vector3(x,originalPosition.y,z );
                elapsed += Time.deltaTime;

                yield return null;
            }

            transform.localPosition = originalPosition;
        }
    }