private GESTURE_DIR getGestureDir(float minRate) { GESTURE_DIR retDir = GESTURE_DIR.NONE; Vector3 dir = (Input.mousePosition - mDragSttScrPos) / Screen.width; // 幅を基準 if (Mathf.Abs(dir.magnitude) > minRate) { if (Mathf.Abs(dir.x) > Mathf.Abs(dir.y)) { retDir = (dir.x > 0.0f) ? GESTURE_DIR.RIGHT : GESTURE_DIR.LEFT; } else { retDir = (dir.y > 0.0f) ? GESTURE_DIR.UP : GESTURE_DIR.DOWN; } } return(retDir); }
public void update() { if (!mStarted) { start(); } mDragPosOld = mDragPos; mMouseRay = Camera.main.ScreenPointToRay(Input.mousePosition); mIsMouseHit = Physics.Raycast(mMouseRay, out mMouseHit, mRayDist, mMouseHitLayerMask); mTargetOld = mTarget; mTarget = ((mIsMouseHit) && (mMouseHit.collider != null)) ? mMouseHit.collider.gameObject : null; // if( mIsMouseHit && (mMouseHit.collider.gameObject!=mHitBodyPrefab)){ mIsMouseHit = false; } if (mIsMouseHit && Input.GetMouseButtonDown(0)) { mIsDrag = true; mMouseState = STATE.DOWN; mDragTarget = mMouseHit.collider.gameObject; } else if (mIsDrag && Input.GetMouseButtonUp(0)) { mIsDrag = false; mMouseState = STATE.UP; mDragTarget = null; } else if (mIsDrag && Input.GetMouseButton(0)) { mMouseState = STATE.DRAG; } else if (Input.GetMouseButton(0)) { mMouseState = STATE.ON; } else { mMouseState = STATE.NONE; } if (Input.GetMouseButtonDown(0)) { mButtonState = STATE.DOWN; } else if (Input.GetMouseButtonUp(0)) { mButtonState = STATE.UP; } else if (Input.GetMouseButton(0)) { mButtonState = STATE.ON; } else { mButtonState = STATE.NONE; } mMousePlane = calcPlane(); if ((mButtonState == STATE.NONE) || (mButtonState == STATE.DOWN)) { mDragPlane = mMousePlane; mDragSttScrPos = Input.mousePosition; if (mIsMouseHit) { mDragSttPos = mMouseHit.point; } else { mDragSttPos = mMouseRay.origin + mMouseRay.direction * mDefPlaneDist; } } float tmpDist; mDragSpeed = mDragPos; if (mDragPlane.Raycast(mouseRay, out tmpDist)) { mDragPos = mouseRay.GetPoint(tmpDist); } mDragSpeed = mDragPos - mDragSpeed; if ((mIsMouseHit) && ((mMouseState == STATE.NONE) || (mMouseState == STATE.DOWN))) { mDragTargetOld = mDragTarget; mDragSpeed = Vector3.zero; } mMouseGestureDir = getGestureDir(mGestureMinRate); dragTargetByMode(); debugDraw(); }
public void update() { if(!mStarted){ start(); } mDragPosOld = mDragPos; mMouseRay = Camera.main.ScreenPointToRay(Input.mousePosition); mIsMouseHit = Physics.Raycast(mMouseRay,out mMouseHit,mRayDist,mMouseHitLayerMask); mTargetOld = mTarget; mTarget = ((mIsMouseHit)&&(mMouseHit.collider!=null)) ? mMouseHit.collider.gameObject : null; // if( mIsMouseHit && (mMouseHit.collider.gameObject!=mHitBodyPrefab)){ mIsMouseHit = false; } if(mIsMouseHit && Input.GetMouseButtonDown(0)) { mIsDrag =true; mMouseState = STATE.DOWN; mDragTarget = mMouseHit.collider.gameObject; } else if(mIsDrag && Input.GetMouseButtonUp(0)) { mIsDrag =false; mMouseState = STATE.UP; mDragTarget = null; } else if(mIsDrag && Input.GetMouseButton(0)) { mMouseState = STATE.DRAG; } else if(Input.GetMouseButton(0)) { mMouseState = STATE.ON; } else{ mMouseState = STATE.NONE; } if(Input.GetMouseButtonDown(0)) { mButtonState = STATE.DOWN; } else if(Input.GetMouseButtonUp(0)) { mButtonState = STATE.UP; } else if(Input.GetMouseButton(0)) { mButtonState = STATE.ON; } else{ mButtonState = STATE.NONE; } mMousePlane = calcPlane(); if((mButtonState == STATE.NONE)||(mButtonState == STATE.DOWN)) { mDragPlane = mMousePlane; mDragSttScrPos = Input.mousePosition; if(mIsMouseHit){ mDragSttPos = mMouseHit.point; }else{ mDragSttPos = mMouseRay.origin+mMouseRay.direction*mDefPlaneDist; } } float tmpDist; mDragSpeed = mDragPos; if(mDragPlane.Raycast(mouseRay, out tmpDist)){ mDragPos = mouseRay.GetPoint(tmpDist); } mDragSpeed = mDragPos - mDragSpeed; if((mIsMouseHit)&&((mMouseState == STATE.NONE)||(mMouseState == STATE.DOWN))) { mDragTargetOld = mDragTarget; mDragSpeed = Vector3.zero; } mMouseGestureDir = getGestureDir(mGestureMinRate); dragTargetByMode(); debugDraw(); }