Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.67 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class CameraShake : MonoBehaviour
  5. {
  6. public bool shakePosition;
  7. public bool shakeRotation;
  8.  
  9. public float shakeIntensityMin = 0.1f;
  10. public float shakeIntensityMax = 0.5f;
  11. public float shakeDecay = 0.02f;
  12.  
  13. [HideInInspector]
  14. public Vector3 OriginalPos;
  15. [HideInInspector]
  16. public Quaternion OriginalRot;
  17.  
  18. private bool isShakeRunning = false;
  19.  
  20.  
  21. public void Shake()
  22. {
  23. OriginalPos = transform.position;
  24. OriginalRot = transform.rotation;
  25.  
  26. if (!isShakeRunning) StartCoroutine(DoShake());
  27. }
  28.  
  29. IEnumerator DoShake()
  30. {
  31. isShakeRunning = true;
  32. float currentShakeIntensity = Random.Range(shakeIntensityMin, shakeIntensityMax);
  33.  
  34. while (currentShakeIntensity > 0)
  35. {
  36. if (shakePosition)
  37. {
  38. transform.position = OriginalPos + Random.insideUnitSphere * currentShakeIntensity;
  39. }
  40. if (shakeRotation)
  41. {
  42. transform.rotation = new Quaternion(OriginalRot.x + Random.Range(-currentShakeIntensity, currentShakeIntensity) * .2f,
  43. OriginalRot.y + Random.Range(-currentShakeIntensity, currentShakeIntensity) * .2f,
  44. OriginalRot.z + Random.Range(-currentShakeIntensity, currentShakeIntensity) * .2f,
  45. OriginalRot.w + Random.Range(-currentShakeIntensity, currentShakeIntensity) * .2f);
  46. }
  47. currentShakeIntensity -= shakeDecay;
  48. yield return null;
  49. }
  50.  
  51. isShakeRunning = false;
  52. }
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement