} //end void gDefine.Direction HandDirection(Vector2 StartPos, Vector2 EndPos) { gDefine.Direction mDirection = gDefine.Direction.none; float xDiff = EndPos.x - StartPos.x; float yDiff = EndPos.y - StartPos.y; float slope = Mathf.Abs(yDiff / xDiff); if (Mathf.Abs(StartPos.x - EndPos.x) > Mathf.Abs(StartPos.y - EndPos.y)) { if (StartPos.x > EndPos.x) { print("Left"); //手指向左滑動 mDirection = gDefine.Direction.Left; } else { print("Right"); //手指向右滑動 mDirection = gDefine.Direction.Right; } } else if (Mathf.Abs(StartPos.x - EndPos.x) == Mathf.Abs(StartPos.y - EndPos.y)) { x = false; mDirection = gDefine.Direction.none; } else if (slope <= 5.67 && slope >= 0.364) { if (StartPos.x > EndPos.x) { mDirection = gDefine.Direction.Left_Up; } else if (EndPos.x > StartPos.x) { mDirection = gDefine.Direction.Right_Up; } } else { if (m_screenPos.y > EndPos.y) { //手指向下滑動 mDirection = gDefine.Direction.Down; } else { //手指向上滑動 mDirection = gDefine.Direction.Up; } } return(mDirection); }
void MouseInput() { if (Input.GetMouseButtonDown(0)) { m_screenPos = new Vector2(Input.mousePosition.x, Input.mousePosition.y); } if (Input.GetMouseButtonUp(0)) { Vector2 pos = new Vector2(Input.mousePosition.x, Input.mousePosition.y); gDefine.Direction mDirection = HandDirection(m_screenPos, pos); Debug.Log("mDirection: " + mDirection.ToString()); } }
void MouseInput() { if (Input.GetMouseButtonDown(0)) { x = true; m_screenPos = new Vector2(Input.mousePosition.x, Input.mousePosition.y); } else { x = false; } if (Input.GetMouseButtonUp(0)) { Vector2 pos = new Vector2(Input.mousePosition.x, Input.mousePosition.y); gDefine.Direction mDirection = HandDirection(m_screenPos, pos); Gesture = mDirection; print(Gesture); } }
void MobileInput() { if (Input.touchCount <= 0) { return; } //1個手指觸碰螢幕 if (Input.touchCount == 1) { print(Input.touches[0].position); //開始觸碰 if (Input.touches[0].phase == TouchPhase.Began) { Debug.Log("Began"); //紀錄觸碰位置 m_screenPos = Input.touches[0].position; //手指移動 } else if (Input.touches[0].phase == TouchPhase.Moved) { Debug.Log("Moved"); //移動攝影機 //Camera.main.transform.Translate (new Vector3 (-Input.touches [0].deltaPosition.x * Time.deltaTime, -Input.touches [0].deltaPosition.y * Time.deltaTime, 0)); } //手指離開螢幕 if (Input.touches[0].phase == TouchPhase.Ended || Input.touches[0].phase == TouchPhase.Canceled) { Debug.Log("Ended"); Vector2 pos = Input.touches[0].position; gDefine.Direction mDirection = HandDirection(m_screenPos, pos); Debug.Log("mDirection: " + mDirection.ToString()); } //攝影機縮放,如果1個手指以上觸碰螢幕 } else if (Input.touchCount > 1) { //記錄兩個手指位置 Vector2 finger1 = new Vector2(); Vector2 finger2 = new Vector2(); //記錄兩個手指移動距離 Vector2 move1 = new Vector2(); Vector2 move2 = new Vector2(); //是否是小於2點觸碰 for (int i = 0; i < 2; i++) { UnityEngine.Touch touch = UnityEngine.Input.touches[i]; if (touch.phase == TouchPhase.Ended) { break; } if (touch.phase == TouchPhase.Moved) { //每次都重置 float move = 0; //觸碰一點 if (i == 0) { finger1 = touch.position; move1 = touch.deltaPosition; //另一點 } else { finger2 = touch.position; move2 = touch.deltaPosition; //取最大X if (finger1.x > finger2.x) { move = move1.x; } else { move = move2.x; } //取最大Y,並與取出的X累加 if (finger1.y > finger2.y) { move += move1.y; } else { move += move2.y; } //當兩指距離越遠,Z位置加的越多,相反之 Camera.main.transform.Translate(0, 0, move * Time.deltaTime); } } } //end for } //end else if } //end void
void MobileInput() { if (Input.touchCount <= 0) { x = false; return; } //1個手指觸碰螢幕 if (Input.touchCount == 1) { x = true; Vector2 finger = new Vector2(); //開始觸碰 if (Input.touches[0].phase == TouchPhase.Began) { //紀錄觸碰位置 m_screenPos = Input.touches[0].position; } else if (Input.touches[0].phase == TouchPhase.Moved) { Debug.Log("Moved"); } //手指離開螢幕 if (Input.touches[0].phase == TouchPhase.Ended || Input.touches[0].phase == TouchPhase.Canceled) { finger = Input.touches[0].position; gDefine.Direction mDirection = HandDirection(m_screenPos, finger); Gesture = mDirection; } } else if (Input.touchCount > 1) { //記錄兩個手指位置 Vector2[] fingerStart = new Vector2[2]; Vector2[] fingerEnd = new Vector2[2]; //是否是小於2點觸碰 for (int i = 0; i < 2; i++) { UnityEngine.Touch touch = UnityEngine.Input.touches[i]; if (touch.phase == TouchPhase.Began) { //紀錄觸碰位置 fingerStart[i] = touch.position; } if (touch.phase == TouchPhase.Ended || touch.phase == TouchPhase.Canceled || touch.phase == TouchPhase.Moved) { fingerEnd[i] = touch.position; } }//end for gDefine.Direction mDirection0 = HandDirection(fingerStart[0], fingerEnd[0]); gDefine.Direction mDirection1 = HandDirection(fingerStart[1], fingerEnd[1]); if (Vector2.Distance(fingerStart[0], fingerStart[1]) > Vector2.Distance(fingerEnd[0], fingerEnd[1])) { Gesture = gDefine.Direction.ZoomIn; } else if (mDirection0 == gDefine.Direction.Down && mDirection1 == gDefine.Direction.Down) { Gesture = gDefine.Direction.ZoomDown; } else { Gesture = mDirection0; } } //end else if } //end void