移动端Input.GetTouch(0).deltaPosition.x转Windows鼠标拖拽实现方法咨询
移动端触摸拖拽转Windows鼠标左右拖拽实现方案
核心逻辑对应关系
移动端的Input.GetTouch(0).deltaPosition.x是获取单帧内触摸点的X轴偏移量,Windows平台下需要通过跟踪鼠标按下后的位置变化来实现等价逻辑,核心是区分「鼠标按下瞬间」和「鼠标持续按住过程」的API调用:
Input.GetMouseButtonDown(0):仅在鼠标左键按下的第一帧触发,用于记录初始位置Input.GetMouseButton(0):在鼠标左键持续按住的每帧触发,用于计算拖拽偏移
实现方式1:获取单帧鼠标X轴偏移(对应deltaPosition.x)
如果你的原逻辑是基于每帧的触摸偏移来处理(比如实时跟随拖拽),可以通过记录上一帧的鼠标X位置来计算单帧偏移:
private float _lastMouseX; void Update() { // 鼠标按下时记录初始位置 if (Input.GetMouseButtonDown(0)) { _lastMouseX = Input.mousePosition.x; } // 按住鼠标时计算单帧偏移 if (Input.GetMouseButton(0)) { float currentMouseX = Input.mousePosition.x; // 这就是对应移动端deltaPosition.x的单帧X偏移量 float mouseDeltaX = currentMouseX - _lastMouseX; // 替换成你原来用deltaPosition.x实现的逻辑,例如: // transform.Translate(Vector3.right * mouseDeltaX * 0.01f); // 更新上一帧位置,用于下一帧计算 _lastMouseX = currentMouseX; } }
实现方式2:获取按下后的累积偏移量
如果需要的是从鼠标按下到当前的总拖拽距离,可以直接记录按下时的初始位置:
private float _startMouseX; void Update() { if (Input.GetMouseButtonDown(0)) { _startMouseX = Input.mousePosition.x; } if (Input.GetMouseButton(0)) { float currentMouseX = Input.mousePosition.x; // 从按下到当前的累积X偏移 float totalDeltaX = currentMouseX - _startMouseX; // 执行你的拖拽逻辑 } }
注意事项
- 不要仅依赖
Input.GetMouseButtonDown(0),它只触发一次,无法跟踪拖拽的持续过程,必须配合Input.GetMouseButton(0)使用 - 如果原移动端逻辑包含滑动惯性,Windows平台需要额外处理鼠标抬起后的惯性衰减逻辑(基础拖拽无需此步骤)
内容的提问来源于stack exchange,提问作者jasmine zhao
相关产品推荐
相关产品推荐

