(每日一题)携程的平滑的到达b点B

(每日一题)携程的平滑的到达b点B

A:物体如何从ab顺利到达b点?

B:物体旋转了90度地图场景,如何平滑它?

首先根据情况给出答案,然后分析原因:

void Awake()
    {
        StartCoroutine(RotateCam());
    }
IEnumerator RotateCam()
    {
        while(gameObject.transform.rotation!=qu)
        {
            yield return new WaitForFixedUpdate();//帧执行
            //这是旋转
            //首先通过该记录1我们的目标位置
            qu = gameObject.transform.rotation * Quaternion.AngleAxis(angle, Vector3.up);
            
            gameObject.transform.rotation = Quaternion.Lerp(gameObject.transform.rotation, qu, 0.1f); 
            //这是位移
            mainCam.transform.position = Vector3.Lerp(mainCam.transform.position, offset + player.transform.position, 0.1f);
        }
    }

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

lerp(开始,结束unity数值平滑变化,OneExecutePer)

开始:初始状态

结束:目标状态

OneExecutePer:每次执行的接近程度(如果为1,则表示执行一次就达到目标)

如果是 0.5,则第一次执行将完成 1/2 的距离。 因为start和end都接近1/2的距离unity数值平滑变化,所以下次执行就会接近1/4(他们的距离缩短一半),简单的说就是一次只走我们一半的距离。

unity数值平滑变化_unity平滑模型_平滑数值是什么意思

未来的数据将是1/8和1/16。 。 。

这样就无法到达最终目的地(理想情况下)。 当无限接近时游戏图片,float等精度只有六位小数。 当差值小于此值时,呼叫将停止。 ,

使用携程有一个缺点。 如果运行过程中再次调用,就会刷新上一次,导致上一次执行没有完成。

文章来源:https://blog.csdn.net/fairen/article/details/118814592