SC_shakeCamera.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. using UnityEngine;
  2. using System.Collections;
  3. public class SC_shakeCamera : MonoBehaviour
  4. {
  5. private float shakeTime = 0.0f;
  6. private float fps = 60.0f;
  7. private float frameTime = 0.0f;
  8. private float shakeDelta = 0.002f;
  9. public Camera cam;
  10. public static bool isshakeCamera = false;
  11. public static float shakeINT = 2;
  12. // Use this for initialization
  13. void Start()
  14. {
  15. shakeTime = 0.1f;
  16. fps = 60.0f;
  17. frameTime = 0.01f;
  18. shakeDelta = 0.002f;
  19. //cam = GameObject.FindGameObjectWithTag ("MainCamera").GetComponent<Camera> ();
  20. cam = gameObject.GetComponent<Camera>();
  21. }
  22. private void OnEnable()
  23. {
  24. }
  25. private void OnDisable()
  26. {
  27. cam.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f);
  28. }
  29. // Update is called once per frame
  30. void Update()
  31. {
  32. if (isshakeCamera)
  33. {
  34. if (shakeTime > 0)
  35. {
  36. shakeTime -= Time.deltaTime;
  37. if (shakeTime <= 0)
  38. {
  39. cam.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f);
  40. isshakeCamera = false;
  41. shakeTime = 0.1f;
  42. fps = 60.0f;
  43. frameTime = 0.01f;
  44. shakeDelta = 0.005f;
  45. }
  46. else
  47. {
  48. frameTime += Time.deltaTime;
  49. if (frameTime > 1.0 / fps)
  50. {
  51. frameTime = 0;
  52. cam.rect = new Rect(shakeDelta * (-1.0f + shakeINT * Random.value), shakeDelta * (-1.0f + shakeINT * Random.value), 1.0f, 1.0f);
  53. }
  54. }
  55. }
  56. }
  57. //else if (Input.GetMouseButtonDown(0))
  58. //{
  59. // shakeCamera();
  60. //}
  61. }
  62. public static void shakeCamera(float shakeInt)
  63. {
  64. shakeINT = shakeInt;
  65. isshakeCamera = true;
  66. }
  67. }