本章咱們一起來看下unity對有觸摸手勢做出的響應
單點觸摸
Input.touchCount==1
移動觸摸
Input.GetTouch(0).phase==TouchPhase.Moved
多點觸摸
Input.touchCount > 1
判斷兩只手指至少有一只為移動觸摸
Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved
/**
* 判斷是否為單點觸摸
**/
public static bool singleTouch()
{
if(Input.touchCount==1)
return true;
return false;
}
/**
* 判斷單點觸摸條件下 是否為移動觸摸
**/
public static bool moveSingleTouch()
{
if (Input.GetTouch(0).phase==TouchPhase.Moved)
return true;
return false;
}
/**
*判斷是否為多點觸摸
**/
public static bool multipointTouch()
{
if (Input.touchCount > 1)
return true;
return false;
}
/**
*判斷兩只手指至少有一只為移動觸摸
**/
public static bool moveMultiTouch()
{
if (Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(1).phase == TouchPhase.Moved)
return true;
return false;
}
/**
*
* 新建一個公共方法用於判斷手指的移動方向
* 假如是往左或者往上 則模型往各個軸的正方向位置移動 函數返回1
* 加入是往右或者往下 則模型往各個軸的負方向位置移動 函數返回-1
*
* **/
int judueFinger(){
if (Input.GetTouch(0).phase == TouchPhase.Began && startPosFlag == true)
{
//Debug.Log("======開始觸摸=====");
startFingerPos = Input.GetTouch(0).position;
startPosFlag = false;
}
if (Input.GetTouch(0).phase == TouchPhase.Ended)
{
//Debug.Log("======釋放觸摸=====");
startPosFlag = true;
}
nowFingerPos = Input.GetTouch(0).position;
xMoveDistance = Mathf.Abs(nowFingerPos.x - startFingerPos.x);
yMoveDistance = Mathf.Abs(nowFingerPos.y - startFingerPos.y);
if (xMoveDistance>yMoveDistance)
{
if(nowFingerPos.x-startFingerPos.x>0){
//Debug.Log("=======沿着X軸負方向移動=====");
backValue = -1; //沿着X軸負方向移動
}
else
{
//Debug.Log("=======沿着X軸正方向移動=====");
backValue = 1; //沿着X軸正方向移動
}
}
else
{
if (nowFingerPos.y - startFingerPos.y>0)
{
//Debug.Log("=======沿着Y軸正方向移動=====");
backValue = 1; //沿着Y軸正方向移動
}else{
//Debug.Log("=======沿着Y軸負方向移動=====");
backValue = -1; //沿着Y軸負方向移動
}
}
return backValue;
}