Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
关于差值lerp的问题,
kongzhixin发起了问答2017-09-30
2
回复
435
浏览

Mathf.Lerp 插值 
C# => static float Lerp(float from, float to, float t);

Description 描述

Interpolates a towards b by t. t is clamped between 0 and 1.

基于浮点数t返回a到b之间的插值,t限制在0~1之间。

When t = 0 returns from. When t = 1 return to. When t = 0.5 returns the average of a and b.

当t = 0返回from,当t = 1 返回to。当t = 0.5 返回from和to的平均值。 

老师在设计模式课程中,t用的是 2*time.deltaTime ,说是2秒钟执行完,这是对的吗?

所有回复
  • sdhexu 2017-10-01

    其实是不对的。

    t是一个进度值。如果传递0进去,那么返回的是最小的值,如果传递1进去,那么返回的是最大值。传递0-1之间的小数,返回时的最小到最大之间的插值,其实就是(max-min)*t

    2*Time.DeltaTime只是不会是0和1之间的进度值。。。他只是近似的算法。

    正确的应该是:Time.DeltaTime / 剩余需要的时间

    你可以这样来算:

         float t;

         float timerLeft = ( to - from ) / 速度;

        if( timerLeft > 0.01f )

           t = Time.DeltaTime / timerLeft;

       else

          t = 1;

       ....Lerp( from, to, t );

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
  • siki 2017-10-06

    time.deltaTime 是每一帧行走五十分之一的距离,是递进的,第一针走了 五十分之一,剩下 49/50 ,下一帧就是走这些剩余距离的1/50,所以每一次行走的距离在减少, 这个是一个先快后面的运动

    乘以2 是整体速度加快2倍

    还有-5条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!