-
유니티 마우스 드래그 - 카메라 이동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() 함수를 넣어서 테스트 했습니다
반응형'Unity' 카테고리의 다른 글
유니티 인벤토리 - 인벤토리 시스템 (0) 2024.01.23 유니티 데이터 저장/불러오기 - Json 데이터 저장/불러오기 (0) 2024.01.22 유니티 DOTween - 알림창 만들기 (0) 2024.01.18 유니티 카메라 확대,축소 / 마우스 드래그 - 카메라 이동 제한 (0) 2024.01.16 유니티 비동기 로딩 - 로딩 씬 (0) 2024.01.12