IEnumerator DragMove() { // GetMouseButtonDown Param :: 0:left click, 1: right click, 2: middle click if (Input.GetMouseButtonDown(1)) { getDown = true; MouseStart.Set(Input.mousePosition.x, Input.mousePosition.y, depth); MouseStart = MainCam.ScreenToWorldPoint(MouseStart); MouseStart.z = this.transform.position.z; } else if (Input.GetMouseButton(1) && getDown) // 실질적인 Move를 수행 { MouseMove.Set(Input.mousePosition.x, Input.mousePosition.y, depth); MouseMove = MainCam.ScreenToWorldPoint(MouseMove); MouseMove.z = this.transform.position.z; //this.transform.position = this.transform.position - (MouseMove - MouseStart); MainCam.transform.position = MainCam.transform.position - (MouseMove - MouseStart); Lock_in_Bound(); } else if (Input.GetMouseButtonUp(1)) { getDown = false; /* 우클릭 후, 카메라 이동하고 있을때 좌클릭 누르고 있는 경우, * 카메라 이동 끝나는 시점에 눌려 있는 좌클릭 마우스 좌표가 MouseMove로 초기화, * -(MouseMove) 연산을 거쳐 카메라 위치가 0,0이 아닌, -MouseMove 좌표로 이동이 됨. * 따라서 "우클릭 후 > 좌클릭을 누르고 있는 경우" 자체를 차단하기 위해 * "누르고 있는 경우" 자체를 삭제함. 해당 변수가 getDown * 무조건 마우스 버튼 down 과정을 거쳐야만 누르고 있는 상태의 코드가 실행됨. */ } yield return(null); }