Unity判斷手勢的滑動方向,單點觸控和多點觸控,並獲取剛觸控以及觸控結束事的座標
本章咱們一起來看下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
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;
}