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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM