当前位置:   article > 正文

Unity平滑函数Lerp简单介绍_unity quaternion.lerp

unity quaternion.lerp

首先简单举例几个适用情况呐。

A:物体从a-b,如何平滑的到达b点

B:物体旋转90,如何平滑

首先按照情况先给答案后续进行解析为什么:

  1. void Awake()
  2. {
  3. StartCoroutine(RotateCam());
  4. }
  5. IEnumerator RotateCam()
  6. {
  7. while(gameObject.transform.rotation!=qu)
  8. {
  9. yield return new WaitForFixedUpdate();//帧执行
  10. //这是旋转
  11. //首先通过该记录1我们的目标位置
  12. qu = gameObject.transform.rotation * Quaternion.AngleAxis(angle, Vector3.up);
  13. gameObject.transform.rotation = Quaternion.Lerp(gameObject.transform.rotation, qu, 0.1f);
  14. //这是位移
  15. mainCam.transform.position = Vector3.Lerp(mainCam.transform.position, offset + player.transform.position, 0.1f);
  16. }
  17. }

lerp主要有三个参数(常用)

lerp(start , end , OneExecutePer )

start:初始状态

end:目标状态

OneExecutePer:每一次执行靠近的度是多少(如果是1,也就是说执行一次就会达到目标)

如果是0.5,第一次执行就会完成1/2的路程,因为start和end靠近了1/2的路程,所以下一次执行就会靠近1/4(他们的距离变短了一半),简单说每次只走我们距离的一半。

以后的数据就是1/8,1/16。。。

这么来说是达不到最终目的地的(理想状态下),当无限靠近的过程中因为精度比如float只有六位小数,当差距小于这个的时候就会停止调用。、

使用携程有一个坏处如果在运行过程中又被调用了,他前面的会被刷新,导致前面的没有执行完成。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号