Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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();
    }
Ejemplo n.º 3
0
    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();
    }