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