统一内的多点触控交互,操作系统是Windows 10

时间:2016-02-26 09:37:27

标签: unity3d touch multi-touch unity5

我可以通过单一触摸在Unity中正常工作,完全没问题。

我无法为我的生活多点接触工作。我想用两个手指的手势模拟相同的输入和右​​键单击,通常捏缩放输入,我已经购买了简单的触摸但无济于事。

我尝试了轻松触摸的示例,他们也没有对多点触控输入作出反应。

我需要在编辑器中工作,因为它是一个由windows 10笔记本电脑/表面4驱动的大型触摸屏显示器的应用程序。

请帮忙。

1 个答案:

答案 0 :(得分:0)

你必须伪造多点触控。对于我们的应用程序,我们需要在编辑器中为3d Viewer调试移动应用程序。

  • 单击左键单击(旋转)
  • 右键单击以翻译两个触摸(翻译)
  • MouseWheel用于两个触摸幅度(缩放)

这不是一对一的移动设备,但足够接近。

private Vector3 previousPosition = Vector3.zero;
public void Update()
{
    if(Input.GetMouseButtonDown(1))
    {
        OnTouchDown(Input.mousePosition); 
        this.previousPosition = Input.mousePosition;
        return;
    }
    else if(Input.GetMouseButtonUp(1))
    {
        OnTouchEnd(Input.mousePosition);
        return;
    }
    else if(Input.GetMouseButton(1))
    {
        Vector3 tempPosition = Input.mousePosition;
        if(this.previousPosition != tempPosition)  // could benefit better check
        {
            OnTouchDrag(tempPosition);
        }
        previousPosition = tempPosition;
        return;
    }
    else if(Input.GetAxis ("Mouse ScrollWheel") != 0f)
    {
        float mag = Input.GetAxis ("Mouse ScrollWheel");
        OnPinch(Vector2.zero, mag);
    }
    else if (Input.GetMouseButton(2))
    {
        Vector2 deltaPosition = new Vector2(Input.GetAxis ("Mouse X"), Input.GetAxis ("Mouse Y"));
        OnPinch(deltaPosition, 0.0f);
    }
}

在上面的代码中,您将拥有一个将信息传播给所有侦听器的InputManager。你可以从那里触发事件。

OnTouchDown,OnTouchDrag和OnTouchEnd转发触摸的当前位置,以便另一个控制器跟踪这些值并考虑位移。

OnPinch考虑触摸的位移和大小。在移动设备中,这可以在一个地方完成。在编辑器中,由于需要两种不同的方法(右键单击和鼠标滚轮),它发生在两个地方。当检测到一个时,另一个案例获得零值。