You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

首次点击时GameObject旋转角度异常,后续正常的问题修复求助

问题修复方案

问题根源在于_prevPos的初始值是默认的Vector3(0,0,0),首次按下鼠标时,Input.mousePosition减去这个初始值会得到一个与当前鼠标屏幕坐标相等的差值,直接用这个值旋转就会导致异常角度。

修复方法是在首次按下鼠标的瞬间初始化_prevPos,确保第一次计算差值时是基于鼠标按下后的移动量,而不是从屏幕原点开始的差值:

private Vector3 _prevPos;
private Vector2 ret;

void Update()
{
    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);
    }
}

关键改动说明

  • 使用Input.GetMouseButtonDown(0)捕获鼠标首次按下的事件,此时将_prevPos设置为当前鼠标位置,避免初始差值异常。
  • 用else if确保只有在已经初始化过基准位置后,才执行旋转计算逻辑,首次按下时不会触发旋转操作,直到鼠标开始移动。

内容的提问来源于stack exchange,提问作者jasmine zhao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:50:40