menu yeungclue
【Unity】今天就教大家做一个流畅的跟随摄像头吧
402 浏览 | 2021-05-11 | 阅读时间: 约 2 分钟 | 分类: 默认分类,Unity学习 | 标签:
请注意,本文编写于 128 天前,最后修改于 128 天前,其中某些信息可能已经过时。

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

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

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

定义好变量了以后,我们在定义一个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);
}

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

发表评论

email
web

全部评论 (共 8 条评论)

    木木木木木木
    2021-05-12 20:40
    听说这里是米奇妙♂妙屋
    摇滚天王
    2021-05-12 14:31
    学会了这个,科三必过
    起飞啦
    2021-05-12 00:58
    我今天被工长骂了,说我拌的水泥太稀了。
    工长把我的铁锹捶烂了,问我水是不是不要钱?我不敢反驳…他不知道的是…我没有多放水,只是拌水泥时很想你,眼泪掉进了水泥里……
    一位不愿意透露姓名的网友
    2021-05-11 22:18
    不错,看完之后非常开心,浑身充满力量,有一股丰收的喜悦
    L
    2021-05-11 22:09
    宝贝我来学习了
    sushome
    2021-05-11 22:03
    离婚两年了,没想到在这刷到你,看到你现在过得自由自在的挺好的。我也放心了,两个孩子都挺想你的,对了老二会叫爸爸了,现在孩子也懂事了,总跟我要爸爸,想孩子了有空回来看看孩子吧
      Sushome'sFather
      2021-05-11 22:04
      @sushome??丢你!
    1123
    2021-05-11 21:55
    爱你宝贝!!!!