【问题标题】:Quaternion.Lerp doesn't rotate object with exact degreesQuaternion.Lerp 不会以精确度数旋转对象
【发布时间】:2015-08-20 09:19:02
【问题描述】:

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

【问题讨论】:

    标签: unity3d quaternions lerp


    【解决方案1】:

    这太奇怪了。

    刚刚添加

    transform.eulerAngles = transform.eulerAngles;
    

    进入

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

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

    【讨论】:

      猜你喜欢
      • 2015-01-12
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 2017-11-27
      • 1970-01-01
      相关资源
      最近更新 更多