unity3d问题集 对Vector3.Lerp 插值的理解 - 转自蛮牛
来源:互联网 发布:知乎 欧美系护肤品 编辑:程序博客网 时间:2024/05/16 05:25
有时,我们在做游戏时会发现有些跟随动作不够圆滑或者需要一个缓冲的效果,这时,一般会考虑到插值。所以对插值的理解是必需的。(比如摄像机跟随主角)
插值是数学上的一个概念,在这里用公式表示就是:from + (to - from) * t;这也就是Lerp的返回值(用这个公式分别算出x,y,z)。
static function Lerp (from : Vector3, to : Vector3, t : float) : Vector3
from 是起始的位置,to是目标位置,按照数字t在from到to之间插值。这句话比较难理解,下面举个例子。
这和我们用公式算出来的如出一辙。现在我们再看一个具体的例子
//在1秒时间动画位置移动从from开始到to结束。(这是官方的例子)
位置移动从start开始到end结束,这好理解,但是为什么是1秒呢?
Time.time是从0开始随时间增加的。
例1的t是一个固定的值,返回一个固定的向量。此时t是变量,在不断增加。那么:
当Time.time = 0时--->transform.position = start.position,位置没有变化;
当Time.time从0趋向于1时--->transform.position 不断接近start.position,该脚本是挂在start物体上的,所以start会不断靠近end。
那么问题来了,当Time.time>1的时候,会怎么样呢?额(⊙o⊙)…我们说不会。
由上面的公式from + (to - from) * t可知,当t=1时,to - from = 0,此时t就无效了。
例1是从静态角度看,例2是从动态角度看的(两个变量,一个是时间在变化,一个是位置在变化)。
想一想例2,如果不是Time.time,而是0.5,会怎么样?(只看一个变量)
由图易知:A物体会不断以0.5的比例无限接近于B。
如果上面都理解了,那么看官方的第二个例子就没什么问题了,试一试吧!
//像弹簧一样跟随目标物体
- unity3d问题集 对Vector3.Lerp 插值的理解 - 转自蛮牛
- unity3d问题集 <2> 对Vector3.Lerp 插值的理解
- unity3d问题集 <2> 对Vector3.Lerp 插值的理解
- unity3d问题集 <2> 对Vector3.Lerp 插值的理解
- 关于函数Vector3.Lerp差值函数的理解记录
- Unity 插值运算 Vector3.Lerp(transform.position, targetPos, smoothing * Time.deltaTime);
- Vector3.Lerp
- Quaternion.Lerp 插值
- Unity —— 关于Lerp插值的基本原理
- Vector3 Lerp差值计算
- Unity Vector3.Lerp
- 对插值算法的理解
- Unity 之Vector3的球形插值Slerp详解
- 我对Unity中Quaternion * Vector3的理解
- 我对Unity中Quaternion * Vector3的理解
- Unity Vector3.Slerp() 球形插值详解
- Vector3.Slerp 球形插值详解
- Vector3.Slerp 球形插值详解
- hdu1867A + B for you again(kmp)
- CSDN看的一些 C艹笔试题
- java集合框架11——TreeMap和源码分析(二)
- 设计模式读书笔记之模版方法模式(Template)
- 设计的7条心理学原则和定律
- unity3d问题集 对Vector3.Lerp 插值的理解 - 转自蛮牛
- 父div高度不能自适应子div高度
- 7z源码分析
- 笔记:基于标签的推荐系统、基于图的推荐算法、PersonalRank
- Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.解决
- c++ primer 学习笔记21类的定义和声明、隐含的this指针、类作用域
- 并查集例题【hdu1232畅通工程,九度1444,hdu5631枚举删除边】
- 修改MFC程序图标
- 设计模式读书笔记之代理模式(Proxy)