这两天在做相机平滑跟随玩家的功能,之前用的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中实现接口与继承的区别
  2. 微型计算机硬件的最小配置包括,职中计算机应用基础第一章测试题及答案
  3. 相角裕量的指令 matlab,[转载]什么是相角裕量、增益裕量?
  4. c语言有一个正整数加上100,c语言编程实现:一个整数,它加上100后是完全平方数,再加168又是完全平方数,求该数。...
  5. html中下边框过渡效果,CSS3 参与背景过度的属性有哪些(transition-property语法规则及多组过渡效果实例)...
  6. 学python有前途吗-现在学Python还有前途吗?能做什么?
  7. python机器学习库keras——线性回归、逻辑回归、一般逻辑回归
  8. Java 并发:volatile 关键字解析
  9. 数据包络分析法(DEA)_2
  10. matlab常用函数总结
  11. 给大家总结的一份白帽子成长进阶指南(内附学习资源)
  12. 在分析仪中创建用户自定义的TRL校准件【以RS矢量网络分析仪为例】
  13. 不同的count用法
  14. 【论坛】交通需求管理政策与实践——中国城市交通发展论坛第十一次研讨会讨论精选...
  15. 无需App!中国移动5G消息数字人民币钱包正式上线
  16. Python安装libsvm
  17. 一文梳理类脑计算的前世今生 | 中科院自动化所研究员李国齐
  18. 背包问题进阶优雅总结【二维费用+分组+有依赖】
  19. xp 自带超级终端的添加
  20. 优秀web前端工程师必备_优秀的Web工程师的技能和素质

热门文章

  1. 深坑之Webview,解决H5调用android相机拍照和录像
  2. 【solidity学习】僵尸之谜一
  3. 【交通标志识别】基于matlab HOG特征机器学习交通标识识别【含Matlab源码 2200期】
  4. cute functions
  5. Selenium登录126邮箱,chrome定位不到账号输入框解决办法
  6. python selenium截图_利用 Python + Selenium 实现对页面的指定元素截图(可截长图元素)...
  7. WinHTTP的AutoProxy常见问题
  8. golang 面试经验分享
  9. 谈谈分享邀请奖励机制(附iOS实现代码)
  10. 微信小程序循环赋值坑(转)