Skip to content

Instantly share code, notes, and snippets.

@mandarinx
Forked from insominx/gist:f3acce17108d0a2e4619
Created January 21, 2016 08:11
Show Gist options
  • Save mandarinx/875540f625b032448fe3 to your computer and use it in GitHub Desktop.
Save mandarinx/875540f625b032448fe3 to your computer and use it in GitHub Desktop.
Screen shake in Unity
IEnumerator Shake() {
float elapsed = 0.0f;
Vector3 originalCamPos = Camera.main.transform.position;
while (elapsed < duration) {
elapsed += Time.deltaTime;
float percentComplete = elapsed / duration;
float damper = 1.0f - Mathf.Clamp(4.0f * percentComplete - 3.0f, 0.0f, 1.0f);
// map value to [-1, 1]
float x = Random.value * 2.0f - 1.0f;
float y = Random.value * 2.0f - 1.0f;
x *= magnitude * damper;
y *= magnitude * damper;
Camera.main.transform.position = new Vector3(x, y, originalCamPos.z);
yield return null;
}
Camera.main.transform.position = originalCamPos;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment