写一个相机抖动的功能,可以用来攻击后相机抖动的效果
直接上脚本吧,写的很清楚了
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;
}
}