这两天在做相机平滑跟随玩家的功能,之前用的DoTween可以解决很大一部分的问题。但是目标位置如果一直在改变的话,就会有奇怪的眩晕感。所以老大说换着Vector3.Lerp 和 Vector3.SmoothDamp 来解决追赶玩家并保持跟随状态。
一开始用的是Vector3.Lerp,用的时候感觉也还行,但是在相机启动的时候会让人感觉速度很快。而且还有很多需要注意的点,比如里面参数t是传【0,1】之间的。相当于百分比去更新当前的位置 ,那么Vector3.Lerp (a,b,t)需要注意的是a是最开始的位置,不是相机当前的位置。那么在规定的时间里去完成lerp ,t+=1/SmoothTime * Time.deltatime,1/SmoothTime * Time.deltatime 为一帧所需要的步长,相机就会匀速到达目标点。但是由于目标点一直在变化,所以最后展现的有加速减速的感觉。
如果下面的a=transform.position,那么t为一个固定的值0.1f,永远保持10%的位置上。
transform.position = Vector3.Lerp(a, targetPos, 0.1f