Quaternion.Lerp 不以精确度数旋转对象

Quaternion.Lerp doesn't rotate object with exact degrees

我想在用户按下向上箭头时使用 Quaternion.Lerp 将我的对象旋转 90 度。但是在每次旋转之后我都可以看到它并没有将我的对象精确旋转 90 度。它旋转大约 88 度。问题是什么?我该如何解决这个问题?

    if (Input.GetKeyDown(KeyCode.UpArrow))
    {
        to.eulerAngles = transform.eulerAngles + new Vector3(90, 0, 0);
        from.eulerAngles = transform.eulerAngles;
        direction = "up";
    }

    if("up".Equals(direction))
        transform.rotation = Quaternion.Lerp(from, to, Time.deltaTime*10);

    if (transform.eulerAngles==to.eulerAngles)
    {
        direction = "";
    }

这太奇怪了。

刚刚添加

transform.eulerAngles = transform.eulerAngles;

进入

if (transform.eulerAngles==to.eulerAngles)
{
    direction = "";
}

并解决了。我觉得Unity的Transform系统不是那么灵敏,我在log上测试了一下,甚至它的旋转在log上大约是88,在inspector中是90。所以我添加这段代码就完成了。