首次点击时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
相关产品推荐
相关产品推荐

