57 lines
1.5 KiB
C#
57 lines
1.5 KiB
C#
|
|
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);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|