如何通过点击更改操纵杆位置?

时间:2017-08-02 14:03:18

标签: unity3d unity5

我是Unity的新手,最近我在操纵杆上挣扎。我想通过手指点击改变操纵杆的位置。例如,如果我触摸屏幕的中心,操纵杆也会显示在中央。

这是我的代码:

 
private void Update()
{
  Touch firstTap = Input.touches[0];
  if (firstTap.phase == TouchPhase.Began)
  {
    m_StartPos = firstTap.position;
    transform.position = m_StartPos;
    UpdateVirtualAxes(m_StartPos);
  }
  else if (firstTap.phase == TouchPhase.Ended)
  {
    m_StartPos = new Vector3(500f, 500f, 0);
    transform.position = m_StartPos;
    UpdateVirtualAxes(m_StartPos);
  }
}

我在操纵杆脚本中添加了Update()函数。点击屏幕时位置确实发生了变化,但是当我移动手指时,onGrag()从未被调用。

1 个答案:

答案 0 :(得分:1)

您可以创建一个类,例如JoystricManager,您可以在其中使用Update()方法。在Update()中,您将检查Input.GetMouseButtonDown(0) - 当用户点击屏幕时,这将是真实的。向操纵杆GameObject添加一个对撞机,并在点击后检查此点击是否在对撞机内。如果点击在里面 - 忽略它,只需检查操纵杆脚本Input.MousePosition以检查操纵杆本身的移动并执行自定义操作(移动播放器等)。如果点击将在操纵杆对撞机外面 - 只需移动操纵杆即可 到新的位置。保存操纵杆中的单击位置以获得单击的开始坐标。当用户移动手指时,您将获得新的鼠标位置,使用这两个点可以计算出操纵杆指向的位置。