在过去做项目当中,跟随摄像头是非常重要的

所以今天就教大家做一个流畅的跟随摄像头吧

定义

首先先定义我们所需要的变量
cameraTarget是摄像头跟踪目标的所在位置
sSpeed是摄像头流动的速度
dist是摄像头与玩家模型的距离
lookTarger则是摄像头瞄准的目标
在LateUpdate方法

定义好变量了以后,我们在定义一个dPos的三维坐标变量,我们通过加上dist坐标的值来制作摄像头与玩家模型距离的值,这里我用了共有变量,便于我在游戏场景中调试最合适的位置。
然后我在定义了sPos来记录摄像头跟随时候的流畅度,我这里用了Lerp 为什么我不用Slerp呢其实看习惯吧 有些人觉得Lerp方法好用有些人喜欢用Slerp,看自己需求来定。
Lerp的用法(Vector3 本身的位置 ,Vector3要去到的位置,速度);
弄完了这些以后
我们就让sPos赋予给摄像机本身的坐标
transform.position=sPos;
然后我们再让摄像头一直看着模型就好了

请输入图片描述

到了第三步,我们在我们所需要跟随的目标下创建camPosition以及TargetPosition
请输入图片描述

然后我们再把我们刚刚做的脚本添加给摄像头,然后把camPosition和TargetPosition拉倒相对应的位置上
请输入图片描述

之后点击unity的播放按钮,然后调我们dist值,调到合适的位置上,之后再把x,y,z的值记录下来,然后退出游戏模式把刚刚的值输入到相对应的地方,就这样我们的摄像头跟随就做完辣!
请输入图片描述
完整代码

public Transform cameraTarget;
public float sSpeed = 10.0f;
public Vector3 dist;
public Transform lookTarget;

private void LateUpdate()
{
    Vector3 dPos = cameraTarget.position + dist;
    Vector3 sPos = Vector3.Lerp(transform.position, dPos, sSpeed * Time.deltaTime);
    transform.position = sPos;
    transform.LookAt(lookTarget.position);
}