1

当用户按下向上箭头时,我想用 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 = "";
    }
4

1 回答 1

2

这太奇怪了。

刚刚添加

transform.eulerAngles = transform.eulerAngles;

进入

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

并解决了。我认为 Unitys Transform 系统不是那么敏感,我在 log 中对其进行了测试,即使它的旋转在 log 上约为 88,在检查器中为 90。所以我添加了这段代码,它就完成了。

于 2015-08-20T11:27:55.910 回答