一个相机抖动的功能

写一个相机抖动的功能,可以用来攻击后相机抖动的效果

直接上脚本吧,写的很清楚了

using System.Collections;
using System.Collections.Generic;
using UnityEngine;


public class CameraController : MonoBehaviour
{
    //该脚本需要被挂到相机上


    private Vector3 DefaultPos;//用来记录相机开始的位置


    [Range(0f,2f)]
    public float Magnitude = 0.4f;//相机抖动的范围


    public float ShakeTime = 0f;//抖动延迟时间


    //被攻击  或者需要相机抖动时调用该方法
public void Shake()
{
StartCoroutine (_Shake ());
}


IEnumerator _Shake()
{
for (int i = 0; i <= 360; i += 60) 
{
            //改变相机的y轴的值  以一个正玄值的变化  变化之后相机位置恢复到原来的位置
transform.position =
                new Vector3(this.DefaultPos.x, this.DefaultPos.y + Magnitude * Mathf.Sin(i * Mathf.Deg2Rad), this.DefaultPos.z);
            //Debug.Log(transform.position.y);//测试变化之后相机位置的位置
            yield return new WaitForSeconds(ShakeTime);
}
}


void Start () 
{
        this.DefaultPos = transform.position;
}
}

猜你喜欢

转载自blog.csdn.net/unity_http/article/details/80827115