摄像机震动 脚本

来源:互联网 发布:达内大数据视频百度云 编辑:程序博客网 时间:2024/05/19 13:28
using UnityEngine;using System.Collections;public class CameraShake : MonoBehaviour {    public bool CancelShake;    public void OnEffect()    {        StartCoroutine(ShakeCamera());    }    /// <summary>    /// 物体震动    /// </summary>    /// <param name="shakeStrength">震动幅度</param>    /// <param name="rate">震动频率</param>    /// <param name="shakeTime">震动时长</param>    /// <param name="hasY">是否震动Y轴</param>    /// <returns></returns>    IEnumerator ShakeCamera(float shakeStrength=0.2f,float rate=14,float shakeTime=0.4f,bool hasY=true)    {        float t = 0;        float speed = 1 / shakeTime;        Vector3 orgPosition = transform.localPosition;        while(t<1&&!CancelShake)        {            t += Time.deltaTime * speed;            transform.position = orgPosition + new Vector3(Mathf.Sin(rate * t),hasY==true?Mathf.Cos(rate * t):0, 0) * Mathf.Lerp(shakeStrength, 0, t);            yield return null;        }        CancelShake = false;        transform.position = orgPosition;    }}


0 0