ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 유니티 마우스 드래그 - 카메라 이동
    Unity 2024. 1. 14. 16:47
    반응형

    안녕하세요

    오늘은 유니티 카메라를 마우스 드래그 한 위치로 이동 시키고, 확대/축소하는 방법입니다.

     

    [변수]

    #region 변수
    [SerializeField] private Camera mainCamera;
    [SerializeField] private float dragSpeed;
    [SerializeField] private float zoomValue;
    [SerializeField] private float minCamSize;
    [SerializeField] private float maxCamSize;
    
    private Vector3 dragOrigin;
    #endregion // 변수

     

    • 카메라 확대/축소 - 최대,최소 지정
    • 카메라 확대/축소를 얼마나 할지 값 지정

    [실행될 위치]

    /** 초기화 => 상태를 갱신한다 */
    private void Update()
    {
        CameraDrag();
    }
    • Update() 에서 실행됩니다

    [메인 구현부분]

    /** 카메라를 드래그 한다 */
    private void CameraDrag()
    {
        // 마우스 왼쪽 클릭을 했을 경우 (한번)
        if (Input.GetMouseButtonDown(0))
        {
            // 현재 위치 저장
            dragOrigin = mainCamera.ScreenToWorldPoint(Input.mousePosition);
        }
    
        // 마우스 왼쪽 클릭을 했을 경우 (지속)
        if (Input.GetMouseButton(0))
        {
            // 원래 위치와 변경된 위치의 차이
            Vector3 difference = dragOrigin - mainCamera.ScreenToWorldPoint(Input.mousePosition);
    
            // 카메라 차이값 만큼 이동
            mainCamera.transform.position += difference * dragSpeed;
        }
    }
    
    /** 카메라를 확대한다 */
    public void ZoomIn()
    {
        float newSize = mainCamera.orthographicSize - zoomValue;
        mainCamera.orthographicSize = Mathf.Clamp(newSize, minCamSize, maxCamSize);
    }
    
    /** 카메라를 축소한다 */
    public void ZoomOut()
    {
        float newSize = mainCamera.orthographicSize + zoomValue;
        mainCamera.orthographicSize = Mathf.Clamp(newSize, minCamSize, maxCamSize);
    }
    • zoomValue = 1, minCamSize = 1, maxCamSize = 10 으로 설정 했습니다
    • 버튼 두개를 생성하여  각각 ZoomIn(), ZoomOut() 함수를 넣어서 테스트 했습니다
    반응형
Designed by Tistory.