| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class ShakeCamera : MonoBehaviour
- {
- public float shakeLevel = 3f;// 震动幅度
- public float setShakeTime = 0.5f; // 震动时间
- public float shakeFps = 45f; // 震动的FPS
- public bool isshakeCamera = false;// 震动标志
- private float fps;
- private float shakeTime = 0.0f;
- private float frameTime = 0.0f;
- private float shakeDelta = 0.005f;
- private Camera selfCamera;
- public void Init()
- {
- isshakeCamera = true;
- if (selfCamera == null)
- {
- selfCamera = this.gameObject.GetComponent<Camera>();
- }
- shakeTime = setShakeTime;
- fps = shakeFps;
- frameTime = 0.03f;
- shakeDelta = 0.005f;
- }
- void OnDisable()
- {
- if (selfCamera != null)
- {
- selfCamera.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f);
- }
- isshakeCamera = false;
- }
- void Update()
- {
- /* if (Input.GetKeyDown(KeyCode.B))
- {
- Init();
- }
- */
- if (isshakeCamera)
- {
- if (shakeTime > 0)
- {
- shakeTime -= Time.deltaTime;
- if (shakeTime <= 0)
- {
- if (selfCamera != null)
- {
- selfCamera.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f);
- }
- isshakeCamera = false;
- //enabled = false;
- }
- else
- {
- frameTime += Time.deltaTime;
- if (frameTime > 1.0 / fps)
- {
- frameTime = 0;
- if (selfCamera != null)
- {
- if (selfCamera != null)
- {
- selfCamera.rect = new Rect(shakeDelta * (-1.0f + shakeLevel * Random.value),
- shakeDelta * (-1.0f + shakeLevel * Random.value), 1.0f, 1.0f);
- }
- }
- }
- }
- }
- }
- else
- {
- if (selfCamera != null)
- {
- if (selfCamera.rect != new Rect(0.0f, 0.0f, 1.0f, 1.0f))
- {
- selfCamera.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f);
- }
- }
- }
- }
- }
|