unity 摄像机震动效果

試著忘記壹切 提交于 2020-02-05 06:08:36

挂载到摄像机上

    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);

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!