- 개요
카메라의 이동과 회전을 수행하는 로직을 추가한다
- 애셋 작업
1) InputActions 애셋

위와 같이 Camera 액션 맵을 추가하고 필요한 Action들과 Action들을 실행할 키를 설정한다
- Zoom 액션 + 마우스 스크롤
- Move 액션 + WASD 키와 화살표 키
- HoldClick 액션 + 마우스 스크롤 클릭
- Rotate 액션 + 마우스 오른쪽 클릭
2) 카메라 오브젝트

카메라 오브젝트에 PlayerInput 컴포넌트를 추가하고 1)에서 생성한 InputActions 애셋을 사용하도록 설정한다
또, Action에 따른 콜백함수를 호출하는 방식을 Invoke Unity Events로 설정하여
에디터에서 Action에 대한 콜백함수를 바인드한다
- 스크립트 작업
1) CameraController 클래스

카메라 이동과 관련된 멤버변수를 추가한다
- moveSpeed 멤버변수 : 카메라의 이동속도
- moveInput 멤버변수 : Move 액션에 연결된 키의 입력값

카메라 회전과 관련된 멤버변수를 추가한다
카메라는 마우스 우클릭을 누르고 있는 상태에서 기준점을 기준으로 회전한다
- rotateSpeed 멤버변수 : 카메라의 회전속도
- focusPoint 멤버변수 : 회전 기준점
- minPitch 멤버변수 : 최소 상하회전각도
- maxPitch 멤버변수 : 최대 상하회전각도
- maxFocusPointDistance 멤버변수 : 카메라와 기준점과의 최대거리
- yaw 멤버변수 : 카메라의 상하회전각도
- pitch 멤버변수 : 카메라의 좌우회전각도
- isRightButtonPressed 멤버변수 : 마우스 오른쪽이 클릭되었는지 판단

Start 함수에서 필요한 멤버변수들의 값을 초기화한다

Action에 바인드할 콜백 함수들을 위와 같이 추가한다
OnMove 함수는 WASD 키와 화살표 키의 값을 읽어와 저장한다
OnRotate 함수는 마우스 오른쪽 키를 누르고 있는지 판단하여 값을 저장한다

HandleCameraMovement 함수를 위와 같이 구성한다
카메라의 로컬 좌표를 월드 좌표로 변경하고 ProjectOnPlane 함수에 넘겨주어 평면에 투영된 방향을 생성한다
이후 방향에 속도를 곱하여 벡터를 생성하고 생성된 벡터를 통해 카메라와 기준점을 이동시킨다

HandleCameraRotation 함수의 로직은 위와 같다
마우스 오른쪽 버튼을 누르고 있다면, Input System 방식으로 커서의 이동 변화량을 가져와 저장한다
이후 숫자 데이터로 통제가 가능한 쿼터니언을 사용하여 카메라의 회전과 위치를 설정한다

UpdateFocusPointFromScreen 함수의 로직을 위와 같이 구성한다
마우스 오른쪽 버튼을 클릭하지 않은 상태에서 회전 기준점을 설정한다
카메라에서 Raycast를 수행하여 적중했다면 기준점의 위치를 적중한 위치로 설정한다

LateUpdate 함수를 추가하여 카메라의 트랜스폼을 설정한다
우선, 회전 기준점을 먼저 설정하고 카메라의 회전, 카메라의 이동을 진행한다
- 애셋 작업
1) 카메라 오브젝트

이전에 추가한 PlayerInput 컴포넌트의 Event 항목에서 위와 같이 Action에 대한 콜백함수를 연결한다
- 최종 실행 결과

'유니티 엔진 - 게임 프로젝트 > 타워 디펜스 게임' 카테고리의 다른 글
| 카메라 - 3) 화면 가장자리 이동 (0) | 2026.06.24 |
|---|---|
| 카메라 - 2) 카메라의 줌 조절과 화면 드래그 (0) | 2026.06.23 |
| 웨이브 시스템 - 최종) 적 이동 개선 (0) | 2026.06.22 |
| 웨이브 시스템 - 4) 실시간 맵 변경 (0) | 2026.06.22 |
| 웨이브 시스템 - 3) 웨이브 연속 처리 (0) | 2026.06.17 |