挂载到摄像机上
public static bool startShake = false; //camera是否开始震动
public static float seconds = 0f; //震动持续秒数
public static bool started = false; //是否已经开始震动
public static float quake = 0.2f; //震动系数
private Vector3 camPOS; //camera的起始位置
// Use this for initialization
void Start()
{
camPOS = transform.localPosition;
}
// Update is called once per frame
void LateUpdate()
{
if (startShake)
{
transform.localPosition = camPOS + Random.insideUnitSphere * quake;
Debug.Log(transform.localPosition);
}
if (started)
{
StartCoroutine(WaitForSecond(seconds));
started = false;
}
}
/// <summary>
/// 外部调用控制camera震动
/// </summary>
/// <param name="a">震动时间</param>
/// <param name="b">震动幅度</param>
public static void ShakeFor(float a, float b)
{
// if (startShake)
// return;
seconds = a;
started = true;
startShake = true;
quake = b;
}
IEnumerator WaitForSecond(float a)
{
yield return new WaitForSeconds(a);
startShake = false;
transform.localPosition = camPOS;
}
外部调用
CameraShake.ShakeFor(0.2f, 0.1f);
来源:CSDN
作者:南佳
链接:https://blog.csdn.net/weixin_43535270/article/details/103904704