这两天在做相机平滑跟随玩家的功能,之前用的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);

不管咋样,都满足不了我现在的需求。

于是就换一种用Vector3.SmoothDamp 平滑阻尼。

void LateUpdate()
{transform.position = Vector3.SmoothDamp(transform.position, target, ref velocity, smoothTime);
}

但是这里的smoothTime 并不是我们所要求的时间,参数smoothTime 和最终平滑到目标点的时间实际上是有一个倍数的关系,如果输入的时间为1秒。

    m_FinTime = smoothTime * 3.7f;

所以如果你想在1秒内完成平滑,那么smoothTime应该是 1 / 3.7f(这个3.7是粗略算出来的,底层的逻辑我没有仔细研究)
不过搞出来平滑所需要的总时间太短也看着不平滑,特别是启动也会有加速的感觉。这个也是玩家也在用一定的时间运动,所以相对速度不持平,就会有顿感吧。

最后也不知道我的思路是不是一开始就走错了。反正这个启动加速感好像没解决。尴尬–
如果你们有更好的解决相机追赶后跟随的方法,教教我教教我
参考链接

Vector3.Lerp 和 Vector3.SmoothDamp 使用的注意事项相关推荐

  1. Unity(九):Lerp线性插值、SmoothDamp

    Mathf.Lerp /*** Mathf.Lerp 函数接受 3 个 float (from, to, 插值)* 参数:* 一个 float 参数表示要进行插值的起始值* 另一个 float 参数表 ...

  2. unity3d Vector3.Lerp解析

    Vector3.Lerp:http://www.ceeger.com/Script/Vector3/Vector3.Lerp.html 手册中描述的不是很详细,什么叫"按照数字t在from到 ...

  3. unity3d问题集 对Vector3.Lerp 插值的理解 - 转自蛮牛

    有时,我们在做游戏时会发现有些跟随动作不够圆滑或者需要一个缓冲的效果,这时,一般会考虑到插值.所以对插值的理解是必需的.(比如摄像机跟随主角) 插值是数学上的一个概念,在这里用公式表示就是:from  ...

  4. Vector3.Lerp

    Unity3D中的线性插值Lerp()函数解析 在unity3D中经常用线性插值函数Lerp()来在两者之间插值,两者之间可以是两个材质之间.两个向量之间.两个浮点数之间.两个颜色之间,其函数原型如下 ...

  5. Unity Vector3.Lerp Vector3.LerpUnclamped 的区别

    Vector3.Lerp 最后的 t 一定是 0 到 1 之间 而 Vector3.LerpUnclamped t 其实是可以超出去的 也就是说 如果你想给俩个确定的 vector3 做一个延长线 那 ...

  6. unity中mathf.Lerp的运用

    在unity3d中经常用线性插值函数Lerp()来在两者之间插值,两者之间可以是两个材质之间.两个向量之间.两个浮点数之间.两个颜色之间,其函数原型如下: 1.Material.Lerp 插值 fun ...

  7. Lerp 函数本质理解

    今天写了两个知识点,发现 CSDN 上都是抄过来抄过去,虽然看看别人写的能解决自己一大部分困惑,然而深入以后还是有不能理解透彻的地方.所以自己把自己理解的加在后面,如有不对,望指教. Unity 中好 ...

  8. web前端分享HTML5中的nav标签学习笔记

    好程序员web前端分享HTML5中的nav标签学习笔记,nav标签全称navigation,顾名思义,是导航的意思.根据HTML5的相关标准定义如下: "A section of a pag ...

  9. 2021-9-1 unity实践出真知

    文章目录 对比前一天没看任何教程做的东西,看了教程的我顿悟了!(涉及多个高能知识点,建议保存) 关于绘制地图 昨天 今天 关于摄像机跟随 昨天 今天 关于2D游戏中的UI 昨天 今天 关于动画状态机的 ...

最新文章

  1. java编写十个评委_Java题 在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分...
  2. rsync与inotify实现数据实时同步
  3. SVN禁止提交部分文件
  4. C#——orm-FulentData(sqlite3)——异常捕获
  5. 在vscode中php语言配置,vscode配置go语言开发环境
  6. 一篇博客搞定Django基础
  7. 如何用java编写五子棋_java编写五子棋
  8. 计算机网络结构示意图,常见的五种计算机网络拓扑结构分析
  9. 关于 socket收发数据一样 接收的数据是错误
  10. 【无标题】种草推广如何精准引流 KOL达人与内容要用好
  11. 威力导演注册机|威力导演(Cyberlink PowerDirector)15破解工具下载
  12. 谷歌浏览器小恐龙作弊无敌代码
  13. MySQL批量修改表的编码和字符集
  14. Python3.7,在Anaconda中安装PIL
  15. Android:This usually happens when two views of different type have the same id in the same hierarchy
  16. 原生html冻结表头,Table冻结表头示例代码
  17. 光引发剂 907/UV光固化引发剂/阳离子光引发剂320/水性无味引发剂
  18. BUAA小型图书管理系统
  19. 基于MATLAB的变速故障信号仿真代码
  20. Win7系统配置开机自动连接宽带

热门文章

  1. 什么是LTS、Alpha、Beta、Dev、Release、Patch版本,软件的开发周期有多少种命名
  2. 二叉树某一结点的所有祖先
  3. windows安装达梦数据库
  4. 用c语言编周期串程序,thi
  5. 从1到n整数中1出现的次数(python 实现)
  6. 梯度下降算法的工作原理
  7. 李大维:互联网人做硬件创业容易产生的七大误解
  8. IDEA调试技巧--看线程生命周期
  9. UserWarning: Glyph 8722 (\N{MINUS SIGN}) missing from current font. plt.show()
  10. 超级终端测试通过的 ymodem 协议