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(他们的距离缩短一半),简单的说就是一次只走我们一半的距离。
未来的数据将是1/8和1/16。 。 。
这样就无法到达最终目的地(理想情况下)。 当无限接近时游戏图片,float等精度只有六位小数。 当差值小于此值时,呼叫将停止。 ,
使用携程有一个缺点。 如果运行过程中再次调用,就会刷新上一次,导致上一次执行没有完成。