ShakeCamera.cs 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class ShakeCamera : MonoBehaviour
  5. {
  6. public float shakeLevel = 3f;// 震动幅度
  7. public float setShakeTime = 0.5f; // 震动时间
  8. public float shakeFps = 45f; // 震动的FPS
  9. public bool isshakeCamera = false;// 震动标志
  10. private float fps;
  11. private float shakeTime = 0.0f;
  12. private float frameTime = 0.0f;
  13. private float shakeDelta = 0.005f;
  14. private Camera selfCamera;
  15. public void Init()
  16. {
  17. isshakeCamera = true;
  18. if (selfCamera == null)
  19. {
  20. selfCamera = this.gameObject.GetComponent<Camera>();
  21. }
  22. shakeTime = setShakeTime;
  23. fps = shakeFps;
  24. frameTime = 0.03f;
  25. shakeDelta = 0.005f;
  26. }
  27. void OnDisable()
  28. {
  29. if (selfCamera != null)
  30. {
  31. selfCamera.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f);
  32. }
  33. isshakeCamera = false;
  34. }
  35. void Update()
  36. {
  37. /* if (Input.GetKeyDown(KeyCode.B))
  38. {
  39. Init();
  40. }
  41. */
  42. if (isshakeCamera)
  43. {
  44. if (shakeTime > 0)
  45. {
  46. shakeTime -= Time.deltaTime;
  47. if (shakeTime <= 0)
  48. {
  49. if (selfCamera != null)
  50. {
  51. selfCamera.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f);
  52. }
  53. isshakeCamera = false;
  54. //enabled = false;
  55. }
  56. else
  57. {
  58. frameTime += Time.deltaTime;
  59. if (frameTime > 1.0 / fps)
  60. {
  61. frameTime = 0;
  62. if (selfCamera != null)
  63. {
  64. if (selfCamera != null)
  65. {
  66. selfCamera.rect = new Rect(shakeDelta * (-1.0f + shakeLevel * Random.value),
  67. shakeDelta * (-1.0f + shakeLevel * Random.value), 1.0f, 1.0f);
  68. }
  69. }
  70. }
  71. }
  72. }
  73. }
  74. else
  75. {
  76. if (selfCamera != null)
  77. {
  78. if (selfCamera.rect != new Rect(0.0f, 0.0f, 1.0f, 1.0f))
  79. {
  80. selfCamera.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f);
  81. }
  82. }
  83. }
  84. }
  85. }