Unity中的Lerp插值的使用

这篇具有很好参考价值的文章主要介绍了Unity中的Lerp插值的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

        平时在做项目中插值的使用避免不了,之前一直在插值中使用存在误区,在这里浅浅记录一下。之前看的博客或者教程还多都存在一个“永远到达不了,只能无限接近”的一个概念。可能是之前脑子中没有插值的概念没理解对,或者当时看的up主也是没理解对,程序员难免会有“bug”,发现解决完善它就OK了。

        一直坚持做一件事很难,希望大家都能坚持下去,慢慢的成长。

Lerp是什么

        首先看官方的定义

public static Vector3 Lerp(Vector3 a, Vector3 b, float t);

参数
Unity中的Lerp插值的使用,Unity问题记录,unity,游戏引擎
返回值

a + (b - a) * t.

描述
        两点之间的线性插值。

        通过插值器t在点a和b之间进行插值。参数t被限制在[0,1]的范围内。这通常用于在两个端点之间的直线上找到一个点(例如,在这些点之间逐渐移动一个物体)。

以上是官方给出的描述,那Lerp的中的三个参数a,b,t具体是什么呢?

        我的理解是a是起始点,b是目标点,t是一个0到1的进度,举一个例子如果a为(0,0,0),b为(10,10,10),那么t为0.5时,返回(5,5,5)。就这么简单。开发项目中最常见的就是处理摄像机的移动用到Lerp

void Update()
{
    transform.position = Vector3.Lerp(transform.position, endPosition, Time.deltaTime);
}

        上述代码的效果就是,运行一开始摄像机会快速向endPosition位置移动,随着距离接近然后越来越慢。出现这个现象的原因,一开始transform.position与endPosition的距离最远,所以插值的距离也大,视觉上运动很快,随着距离慢慢靠近,插值的距离也越来越短,就会出现先快后慢的效果。这里使用Time.deltaTime就出现了开头说的永远无法到达目标的问题。只会越来接近。

如何使用Lerp

        要理解Lerp,最重要一点就是使用时要有一个进度的一个概念,如上述例子中如果t为0.5,则返回的坐标就为(5,5,5),这个0.5就是一个进度
举例来说明,就是上述例子1秒内一个物体从(0,0,0)到(10,10,10)

    Vector3 startPos = Vector3.zero;
    Vector3 endPos = new Vector3(10,10,10);
    float duration = 1f;
    float curTime = 0f;
	void Update()
    {
        float t = curTime / duration;

        transform.position = Vector3.Lerp(startPos, endPos, t);
        curTime+=Time.deltaTime;
    }

上述代码中的t就是进度,这样就不会到达不了endPos

如有错误,欢迎指正。文章来源地址https://www.toymoban.com/news/detail-833199.html

到了这里,关于Unity中的Lerp插值的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Unity游戏开发中的常见问题第二卷】AnyState小坑导致动画卡在第一帧

    【Unity游戏开发中的常见问题第二卷】AnyState小坑导致动画卡在第一帧

    在使用 Unity 自带的 Animator 时偶然出现的问题,有一个动画是通过 Any State 传递的,然后碰到了一直卡在第一帧的情况,其实是一个设置问题,需要把 Can Transition To Self ,可能也有其他原因导致类似问题的发生,不过感觉这应该是新手常碰的问题了~ 如果你不禁用传输到自身

    2024年02月16日
    浏览(15)
  • 记录一下Unity使用过程中出现的问题

    记录一下Unity使用过程中出现的问题

    1.(2022.3.16) 问题:Unity打开已存在的项目时,一直停留在Hold on... Importing assests界面。 原因及解决方案:Unity Hub中项目设置的默认位置带有中文,将其修改为不含中文的路径即可。 (更新) 重新打开又出现类似问题,一使用VS进行脚本编辑时再次出现加载框,尝试先打开V

    2024年02月08日
    浏览(8)
  • Unity物体移动的几种方式与表现(Lerp,SmoothDamp,MoveTowards的区别)

    Unity物体移动的几种方式与表现(Lerp,SmoothDamp,MoveTowards的区别)

    看看Lerp,SmoothDamp,MoveTowards的区别。 Lerp用于插值,本身不是用于移动的API。但可以和协程配合用于移动。 SmoothDamp用于移动,是阻尼移动,从不超过。 MoveTowards用于移动,是匀速移动,也不会超过。 Lerp最简单的用法如下: 效果是非匀速的(逐渐逼近),可以看到在接近终

    2024年02月03日
    浏览(13)
  • unity卡牌游戏开发记录(4)

    unity卡牌游戏开发记录(4)

    咕咕咕,鸽了好久,今天来继续我们的游戏开发 今天实现的内容是把卡牌加入卡组,从文件读取卡组,从卡组删除卡牌,把卡组保存到文件中。 ---------------------------------------------------分割线--------------------------------------------------------------------- 首先是卡牌加入卡组。上一期我

    2024年04月27日
    浏览(9)
  • unity卡牌游戏开发记录(2)

    unity卡牌游戏开发记录(2)

    有了卡牌,当然少不了卡组。为了创建一个卡组,首先当然是有一大堆卡。为了一个卡牌库,我原本打算用数据库,不过还是懒了,先用excel撑着先。当然,一开始肯定没多少卡,姑且做个十来张再说。配套的还有对应的ui界面,先做一个先 -------------------------------------------

    2024年03月21日
    浏览(12)
  • Unity学习记录:制作双屏垃圾分类小游戏

    Unity学习记录:制作双屏垃圾分类小游戏

    要实现的功能 游戏操作 在规定时间内,垃圾通过拖拽进入正确垃圾桶的容器,垃圾在这里消失,飞入第二个屏上对应垃圾桶的位置并实现加分和加时间的效果,垃圾拖拽进入不正确的垃圾桶,垃圾会返回到原来的位置,同时,相应的时间也会减少 胜利和失败的条件: 胜利:

    2024年02月03日
    浏览(10)
  • Blender个人使用记录【导出FBX格式】【导入Unity中出现白模问题(Blender向)】

    Blender个人使用记录【导出FBX格式】【导入Unity中出现白模问题(Blender向)】

    以下说明仅用于记录个人使用Blender和Unity时遇到的问题及其解决方法(并不一定适用所有人),通过B站、CSDN、知乎等地方搜索了一系列有关解决模型导入Unity出现白模的问题,发现不少对新手而言讲解的不明白不清楚的,亦或是不实用的。故将自己遇到的问题记录下来以供参

    2024年02月01日
    浏览(17)
  • Unity使用c#开发遇上的问题(一)(c#中无法引入input,双击unity中的c#文件无反应,unity中刚体设置后仍然穿越问题)

    Unity使用c#开发遇上的问题(一)(c#中无法引入input,双击unity中的c#文件无反应,unity中刚体设置后仍然穿越问题)

    闲着无聊,想用unity编一编小游戏,遇上的坑(一) 我使用的是vs2019,unity版本是2022.1,下载器Hub。 在asset中创建c#脚本移动cube。在写入X,Y偏移量时没有unity引擎的Input函数。 解决方法: 1.首选项中设置中文语言。

    2024年02月07日
    浏览(43)
  • Unity项目转微信小游戏踩坑记录

    Unity项目转微信小游戏踩坑记录

    1.首先 你需要去他的SDK地址,去下载SDK,并浏览一下相关流程内容       这个SDK现在没有一个长期稳定的版本,基本三天一小更,五天一大更。所以你懂的,更新之前好好看看更新的内容在决定。 2.webgl不支持多线程,Socket,同步加载。如果项目用到比较多的这些内容,工作

    2024年02月09日
    浏览(11)
  • 解决Unity游戏开发使用Visual Studio Enterprise 2022提示未找到目标框架.net framework4.7.1问题

    解决Unity游戏开发使用Visual Studio Enterprise 2022提示未找到目标框架.net framework4.7.1问题

    采用Visual Studio Installer安装Visual Studio Enterprise 2022,安装中勾选游戏下Unity游戏开发。 单个组件中确保勾选.NET Framework 4.7.1目标包 安装位置自定义修改至F盘后使用Visual Studio Enterprise 2022登录,在Unity设置使用Visual Studio Enterprise 2022并打开对应项目文件,提示未找到目标框架.net

    2024年02月10日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包