1. 程式人生 > >Unity判斷手勢觸控的型別 ,判斷手勢的滑動方向,並獲取剛觸控以及觸控結束事的座標

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 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;

    }