Unity/Unity 리서치

터치 드래그로 카메라 이동 (한손가락, 두손가락)

lipnus 2021. 6. 11. 00:36
반응형

아래 코드는 이동의 Diff를 Vector3값으로 반환하는 매소드이다.

이 값을 이용하여 Camera의 Transform을 조정하면 된다.

 

한손가락

        private Vector2 nowPos, prePos;
        private Vector2 movePosDiff;

        private Vector2 getTouchDragValue()
        {
            movePosDiff = Vector3.zero;

            if(Input.touchCount == 1)
            {
                Touch touch = Input.GetTouch (0);
                if(touch.phase == TouchPhase.Began)
                {
                    prePos = touch.position - touch.deltaPosition;
                }
                else if(touch.phase == TouchPhase.Moved)
                {
                    nowPos = touch.position - touch.deltaPosition;
                    movePosDiff = (Vector2)(prePos - nowPos) * Time.deltaTime;
                    prePos = touch.position - touch.deltaPosition;
                }
            }
            return movePosDiff;
        }
    }

 

두손가락

SelectionBox와 Input이 겹쳐서 두손가락으로 드래그 이동 구현.

위 코드랑 원리는 같고, 두 손가락의 중앙값을 기준으로 삼는다.

if문은 두번째로 터치된 손가락만 가지고 판별하면 됨.

        private Vector2 nowPos, prePos;
        private Vector2 movePosDiff;

        private Vector2 getTouchDragValue()
        {
            movePosDiff = Vector3.zero;

            if(Input.touchCount == 2)
            {
                Touch touchZero = Input.GetTouch(0);
                Touch touchOne = Input.GetTouch(1);

                if(touchOne.phase == TouchPhase.Began)
                {
                    prePos = ((touchZero.position - touchZero.deltaPosition) + (touchOne.position - touchOne.deltaPosition)) / 2; 
                }
                else if(touchOne.phase == TouchPhase.Moved)
                {
                    nowPos = ((touchZero.position - touchZero.deltaPosition) + (touchOne.position - touchOne.deltaPosition)) / 2;
                    movePosDiff = (Vector2)(prePos - nowPos) * Time.deltaTime;
                    prePos = ((touchZero.position - touchZero.deltaPosition) + (touchOne.position - touchOne.deltaPosition)) / 2;
                }
            }
            return movePosDiff;

        }
    }    

 

반응형

'Unity > Unity 리서치' 카테고리의 다른 글

Android Build시 프레임드랍 문제  (0) 2021.06.11
Pinch Zoom (두손가락, 세손가락)  (0) 2021.06.11
Time.deltaTime  (0) 2021.06.11
Camera Panning  (0) 2021.06.10
[RTS Engine] Camera관련 코드  (0) 2021.06.10