解决Unity3D关于手机触屏事件的方法

经过了不断的调试,终于解决了这个问题,虽然花的时间久了些,不过很值得

这是移动的代码

if(Input.touchCount>0&&Input.GetTouch(0).phase.Equals(TouchPhase.Began))
{
touchBeganPosition = Input.GetTouch(0).position;
}

//这是触屏的代码

TouchDirection direction = TouchDirection.None;
direction = GetTouchDirection();
if(direction==TouchDirection.None)
{
return;
}

 

通过switch控制方向

switch (direction)
{
case TouchDirection.None:
return;
case TouchDirection.Top:

break;

case TouchDirection.Botton:

break;
case TouchDirection.Left:
….
break;
case TouchDirection.Right:
…..
break;
}

 

private TouchDirection GetTouchDirection()
{

if (Input.touchCount > 0 && Input.GetTouch(0).phase.Equals(TouchPhase.Ended))
{
touchEndedPosition = Input.GetTouch(0).position;

Vector3 touchOffset = touchEndedPosition – touchBeganPosition;

if (Mathf.Abs(touchOffset.x) > Mathf.Abs(touchOffset.y) && Mathf.Abs(touchOffset.x) > 5 && Mathf.Abs(touchOffset.y) > 5)//注意这里在移动设备上的值可能会偏小,主要是检测小范围的误触碰;
{
if (touchOffset.x > 0)
return TouchDirection.Right;//返回向右移动
else
return TouchDirection.Left;//返回向左移动
}

//这里检测竖直方向
if (Mathf.Abs(touchOffset.y) > Mathf.Abs(touchOffset.x) && Mathf.Abs(touchOffset.x) > 5 && Mathf.Abs(touchOffset.y) > 5)//注意这里在移动设备上的值可能会偏小,主要是检测小范围的误触碰;
{
if (touchOffset.y > 0)
return TouchDirection.Top;//返回向上移动
else
return TouchDirection.Bottom;//返回向下移动

}
}
return TouchDirection.None;

}

 

核心的代码都在这里了