【问题标题】:rotate to difference angle when first click第一次点击时旋转到不同的角度
【发布时间】:2022-11-01 17:45:20
【问题描述】:

我使用此代码旋转我的游戏对象,但问题是当我第一次单击时,游戏对象旋转到不同的角度。然后找到。

    private Vector3 _prevPos;
    private Vector2 ret;
if (Input.GetMouseButton(0))
    {
         ret = Input.mousePosition - _prevPos;
         _prevPos = Input.mousePosition;


         transform.Rotate(ret.y / 10, 0, ret.x );

    }

在调试中,当我第一次单击时,“ret.y”的数字不是 0。

我该如何解决这个问题?

【问题讨论】:

    标签: unity3d


    【解决方案1】:

    问题是_prevPos 是(0,0),所以ret 第一次将是Input.mousePosition

    在没有输入的情况下,您必须保持_prevPos 更新,因为会出现同样的问题,当您松开按钮时,将鼠标移到别处,然后再次单击。

    _prevPos = Input.mousePosition 移动到Update 的末尾。

    【讨论】:

      【解决方案2】:

      正如在初始帧中正确提到的here,您正在使用纯Input.mousePosition 旋转。

      为了避免错误的增量,您可以额外处理初始情况

      if(Input.GetMouseButtonDown(0))
      {
          _prevPos = Input.mousePosition
      }
      else if (Input.GetMouseButton(0))
      {
          ret = Input.mousePosition - _prevPos;
          _prevPos = Input.mousePosition;
      
           transform.Rotate(ret.y / 10, 0, ret.x );
      }
      

      第一个块现在在按下的第一帧中执行,第二个块在所有其他帧中执行,同时按钮保持按下状态

      【讨论】:

        猜你喜欢
        • 2015-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-23
        • 2015-06-22
        相关资源
        最近更新 更多