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