var op = Camera.main.transform.position;
var or = Camera.main.transform.eulerAngles;
var desp = new Vector3(1.7f, 1.6f, -0.53f);
var desr = new Vector3(22, 180, 0);
var x = op.x;var z = op.z;
for(int i =0;i < 200;i++)
{
x = Mathf.Lerp(x, desp.x, 0.024f);
if (Mathf.Abs(x - desp.x) < 0.0001f) Debug.Log(i);
z = Mathf.Lerp(op.z, desp.z, (i + 1) / 200f);
Camera.main.transform.position = new Vector3(x, 1.6f, z);
Camera.main.transform.eulerAngles = Vector3.Slerp(or, desr, (i+1 )/ 200f);
yield return null;
}
原理还是lerp函数,只是本来是生硬的直线过去,现在通过更改x,y,z的单独值,保持另外两个不变或者呈线性变化,这样最终得到的就是一个曲线运动
另外这是写在协程里的,搭配了协程循环跟lerp函数一起逐步变化位置的过程