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

移动端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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:31:02