MoveTowards、Lerp、Slerp

admin3年前unity基础API617

1:MoveTowards

 MoveTowards(Vector2 current, Vector2 target, float maxDistanceDelta);

current:当前位置 

target:目标位置

maxDistanceDelta: 每次移动的距离

返回值是当current值加上maxDistanceDelta的值,如果这个值超过了target,返回的就是target的值。


2:Lerp

Lerp表示线性插值

  Mathf.Lerp(1,10,1);

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


它的作用就是按照t计算a和b之间的插值。t的取值范围是[0, 1]。
简单理解就是当t=0, 返回值是a,当t=1,返回值是b。同理,t=0.1时是a到b的10%。t就代表了a到b的百分比。

3:Slerp

球形插值在Vector3、Quaternion等类都有使用,一般多在Quaternion的旋转操作时使用。

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

这里球形插值与线性插值不同的地方在于,它将Vectors视为方向而不再是点。返回的向量方向,它的角度是根据a和b的角度插值,而它的长度是根据a和b的长度插值。
可以用其模拟太阳的升降变化等操作。

public static Quaternion Slerp(Quaternion a, Quaternion b, float t);

计算a与b的球形插值。
Quaternion的Lerp与Slerp结果都是一样的,Lerp的效率会比Slerp高些,但是当旋转值a和b离得比较远时,Lerp的效果会非常差。



对于插值(Slerp和Lerp)运算中的t,要明白它代表的是百分比,直接对齐赋值时间如Time.deltaTime是没意义的,因为如果t为1的话,永远都不会到达目标值

相关文章

Unity3d KeyCode 键盘各种键值详情

 Backspace     退格键  Delete      De...

Unity使用input system制作一个摇杆控制物体移动

Unity使用input system制作一个摇杆控制物体移动

1:首先使用UI做个摇杆的模型 两个图片嵌套,外侧是边界,中间图片是摇杆2:使用inputSYSTEM创建事件3:玩家物体上绑定脚本using System.Collections...

相机跟随角色移动旋转方法

相机跟随角色移动旋转方法

1:首先做个一个空的节点作为相机的根节点 参数归02:在根节点添加一个节点作为缩放 镜头上下移动 Z 镜头远近 Y 镜头上下3:最后添加真正的镜头对象Camer...

相机跟随角色移动镜头缩放方法

这种方法最简单可以实现相机跟随角色平移1:计算相机和目标物体的距离  offset = this.transform.position - ...

Unity 创建2D地图技巧

Unity 创建2D地图技巧

1:瓦片尺寸的设置这里的每个单位像素要和图片的真实的宽高一样,否则绘制的时候出现缩放2: 地图碰撞添加需要给地图添加碰撞体如图然后还需要加上如下碰撞体最后需要勾选上 TileMap Coll...

Unity 手机触摸Touch事件

1:判断是否触摸如果大于0那就是最少一个手指触摸了屏幕 以此类推 如果=2就是2个手指 最多10个if(Input.touchCount >0)2:判断单...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。