using UnityEngine; using System.Collections; public class ScreenShake : MonoBehaviour { private float SHAKE_DELTA = 0.01f; private float shakeTime = 0.0f; private float fps = 20.0f; private float frameTime = 0.0f; private float shakeDelta = 0.005f; public Camera cam; private bool isshakeCamera = false; public void Shake(float pShakeTime) { shakeTime = pShakeTime; isshakeCamera = true; } void Start() { shakeTime = 1.0f; fps = 20.0f; frameTime = 0.03f; shakeDelta = SHAKE_DELTA; } void Update() { if (isshakeCamera) { if (shakeTime > 0) { shakeTime -= Time.deltaTime; if (shakeTime <= 0) { cam.rect = new Rect(0.0f, 0.0f, 1.0f, 1.0f); isshakeCamera = false; shakeTime = 1.0f; fps = 20.0f; frameTime = 0.03f; shakeDelta = SHAKE_DELTA; } else { frameTime += Time.deltaTime; if (frameTime > 1.0 / fps) { frameTime = 0; cam.rect = new Rect(shakeDelta * (-1.0f + 2.0f * Random.value), shakeDelta * (-1.0f + 2.0f * Random.value), 1.0f, 1.0f); } } } } } }