Unity中使用Lerp()函数实现缓动效果

  • Post author:
  • Post category:其他


在Unity里面Lerp函数可以实现缓动效果

using UnityEngine;

using System.Collections;

public class test : MonoBehaviour {

private Vector3 newPos;
  void Start ()
   {
    pos = transform.position;
 }
     void Update () {
    if(Input.GetKeyDown(KeyCode.A))
        pos = new Vector3(-3,8,22);
    if(Input.GetKeyDown(KeyCode.D))
        pos = new Vector3(3,8,22);
    transform.position = Vector3.Lerp(transform.position,pos,Time.deltaTime);
}

}

若Lerp(from(起点),to(终点),value),则

插值函数Lerp()的工作原理(公式):

返回值 = from+value*(to – from);

需要注意的是,这里的value取值范围为0到1。

上例代码中使 value=Time.deltaTime(每帧中的时间增量(一般来说是从0到1的一个动态数值)),这样当Time.deltaTime平滑增加时,通过插值函数的作用,就时物体的position平滑变动,物体就实现了缓动的效果。



版权声明:本文为qq_43770004原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。