티스토리 뷰

Game Mode

여태까지 작업했던 것들을 Game Mode를 통해 한 군데로 모아줄 것이다.

이를 위해 우선 Game Mode Mase의 클래스를 생성 후, 해당 클래스를 토대로 블루 프린트 클래스까지 생성해준다.

 

블루 프린트 클래스 생성 후에는 만들어 뒀던 Player Controller 클래스와 Default Pawn Class를 할당해주자.

 

이제 기본 월드 세팅에서 GameMode를 방금 생성한 것으로 바꿔주고, 플레이어 스타트를 배치해 테스트 해보자.

 

현재는 플레이어에 카메라가 없는 상태이기에 시야가 플레이어에 딱 붙어서 이상하게 잡히는 것을 볼 수 있다.

 

우선 플레이어 캡슐 컴포넌트에 Spring Arm을 부착해주고, 이어서 Camera까지 부착해주자.

 

우리는 TopDown 방식의 게임을 목표로 하고 있기 때문에, 이에 맞게 카메라의 위치와 각도를 조정해준다.

TopDown 게임은 일반적으로 카메라가 고정된 시점에서 캐릭터의 움직임을 내려다보는 구조를 사용한다. 따라서 Use Pawn Control Rotation 옵션은 비활성화하여 카메라가 컨트롤러 회전을 따르지 않도록 설정한다.

 

또한, Camera Lag 기능을 활성화하여 캐릭터 이동 시 카메라가 즉시 따라가지 않고 약간의 지연을 두어 추적하도록 설정하였다. 이를 통해 보다 부드럽고 자연스러운 움직임을 연출할 수 있다.

세팅 이후 플레이 시야

 

지금은 캐릭터를 움직이면, 회전할 때 캐릭터가 자연스럽게 회전하는 것이 아니라 방향이 고정된 상태로 회전한다.

따라서 이를 수정해주기 위해 캐릭터의 코드의 생성자를 통해 관련된 값들을 할당해줄 것이다.

 

먼저 bOreintRoationToMovement 기능을 활성화하여 이동 입력 방향으로 캐릭터가 자동 회전하도록 한다.

이후에 RotationRate를 수정하여 수평 회전에 대한 회전 속도를 조정해줄 것이다.

탑다운 게임은 Z축 이동이 필요없기에 bConstrainToPlane 기능을 통해 Z축 이동을 명시적으로 제한하고, bSnapToPlaneAtStart 기능 도 활성화하여 시작할 때 캐릭터를 평면 위로 강제로 맞추었다.

 

마지막으로 캐릭터가 컨트롤러 회전을 따르지 않도록 모든 축(Pitch, Yaw, Roll)에 대해 비활성화하였다.

이는 이전에 비활성화한 Use Pawn Control Rotation 옵션과 함께, 컨트롤러의 회전 값이 카메라나 캐릭터에 적용되지 않도록 분리하기 위함이다.
그 결과, 캐릭터의 회전은 오로지 이동 입력 방향을 기준으로 이루어지도록 설정하였다.

 

추가적으로 카메라 세팅에서 상속된 회전 값 또한 같은 이유로 비활성화해주어야 한다.


 

이외 별개의 개선사항으로, 캐릭터 움직임에 대한 애니메이션도 수정해주었다.

기존에는 IdleWalkRunning 한동작으로 묶었지만, Idle 상태와 Running 상태를 분할시켜줄 것이다.

 

이를 위해 움직임 여부를 체크하기 위한 Boolean 변수를 사용해, 애니메이션 변경의 근거로 삼을 것이다.

 

이제 움직임 여부를 토대로 전환 룰을 설정해준다.

 

마지막으로 Idle 상태는 움직이지 않는 한 계족 유지되기에, Loop Animation 기능을 활성화해준다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함