클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

유저 캐릭터 동작 만들기 2 - Old Input System과 Enhanced Input System 본문

게임 개발 공부/개인 프로젝트

유저 캐릭터 동작 만들기 2 - Old Input System과 Enhanced Input System

huenuri 2024. 8. 25. 15:11

이제 조금 전에 만들었던 Enhanced Input System을 블루프린트로 코딩해보기로 하자.


 

 

 

향상된 입력 시스템 블루프린트

 

블루프린트 참고 블로그

 

이벤트 그래프에서 이와 같은 노드를 만들고 Mapping Context의 Select Asset을 조금 전에 만들었던 IMC_Player_Input으로 설정해준다.

 

 

 

 

Input Action

먼저 Input 폴더에 만들어놓았던 IA_이벤트 3개를 불러온다. 원래 프로젝트를 만들 때 같은 이름의 에셋이 존재한다. 그러니 폴더의 위치를 살펴보며 노드를 가져와야 하지만, 이런 것을 확인하기 귀찮으면 이름을 다르게 설정해줄 수도 있다.

Jump 노드

 

점프는 점프 노드에 연결해준다. 이 노드가 가장 쉬운 것 같다.

 

 

 

 

Move 노드

 

여기에는 2개의 같은 이동 노드가 있다. 하나는 x축으로, 다른 하나는 y축으로 동작하는데 각각을 Get Control Rotation과 Get Right Vect, Get Forward Vector에 연결한다. 그리고 이 결과값을 World Direction 핀에 연결한다.


 

 

Pitch, Yaw, Roll

 

조금 생소한 단어가 있어 찾아보며 개념을 정리해보려고 한다.

좌표계 회전 방향

좌표계 회전 방향 이해

Pitch : 좌우 축을 기준으로 한 회전각
Yaw : 상하 축을 기준으로 한 회전각
Roll : 앞뒤를 기준으로 한 회전각

 

 

 

Look 노드

 

Look 노드는 조금 복잡한데 전체 구성은 이렇게 된다.

 

마우스를 회전하는 값을 변수로 하나 받아서 20으로 설정해주고, 이를 Delta Seconds 노드에 곱해서 넣어준다.

한번 더 곱해서 입력핀은 x축에 출력핀은 Yaw Input에 연결한다. Yaw는 상하 방향이고, Pitch는 좌우 방향이니 이렇게 하면 마우스 움직임을 감지한 4가지 방향으로 캐릭터의 시점이 변경된다.

 

 

 

 

 


 

 

 

노드 최적화하기

 

곱하기를 2개 3개씩 두는 것보다 하나로 묶는 것이 더 간단하니 이렇게 만들어보았다. 근데 이상하게도 난 왼쪽 오른쪽 시점 이동은 되는데, 상하의 시점은 변경되지 않는다.

 

3개로 묶어줄 때는 X, Z축은 적용이 되지 않도록 체크를 해제해주었다.


 

 

 

문제점 해결하기 <시점 이동>

 

좌우 시점은 되는데 상하 시점 이동은 되지 않는지 그 이유를 알게 되었다. 그건 내가 Old Input System을 설정할 때 프로젝트 세팅 메뉴에서 마우스 상하 입력 키를 넣지 않았기 때문이었다.

다시 이렇게 설정해주었다.

 

 

Spring Arm 설정

 

Spring Arm을 선택하고 Detail창에서 pawn을 검색한다. 그리고 Camera Settings에서 Use Pawn Control Rotation을 체크해준다.

Use Pawn Control Rotation : Control Rotation값을 사용하여 스프링암의 회전이 동기화되도록 설정

 

이걸 체크하지 않으면 상하 시점이 이동되지 않는다.


 

 

 

Old Input System 노드 만들기

 

앞선 포스트에서는 Old Input System 노드는 필요 없다고 생각해서 만들지 않았다. 하지만 모두 Enhanced를 사용할 수 있는 게 아니라는 걸 알게 되었다.

기본적인 마우스 조작의 경우 Inhanced가 아닌 Old Input으로 만들어야 했다. 그러면 이제 노드를 작성해보자! 언리얼 공부를 할 때 이 블로그가 참 많은 도움이 되고 있다.

 

 

 

Move 노드

 

앞뒤로 이동하는 W, S 이동이다.

 

 

 

 

 

왼쪽 오른쪽으로 이동하는 A, S 이동이다.

 

 

 

 

Look 노드

 

 

 

Jump 노드

 

점프 값이 약하다면 BP_Player 컴포넌트를 선택한 후 detail 창에서 jump 값을 높여준다.

 

 

 

 

 

 

이제 드디어 상하 시점까지도 변경이 가능하다. 휴~ 이 기능을 적용하려고 지난 2주 동안 정말 애썼는데 하지 못했었는데 오늘 드디어 해냈다!


 

 

 

학습을 마치고

 

그동안 언리얼 공부를 체계적으로 하지 않았던 것 같다. 그냥 수업 시간에 강사님이 올려주신 노드를 따라서 옮기기만 했는데, 그렇게 하니 공부가 하나도 되지 않고 이해도 되지 않았다.

난 요즘 학원에서 아무리 모르는 게 있어도 강사님께도 같은 반 교육생들에게도 물어보지 않는다. 전에는 모르는 문제가 있으면 빨리 해결하고 싶어서 사람들을 찾아가서 질문을 많이 했었다. 하지만 그렇게 했을 때 내게 별 도움이 되지 않는다는 걸 알게 되었다. 쉽게 뭔가를 얻기보다 힘들게 혼자서 머리를 싸매며 애를 썼던 개발 경험들이 쌓일 때 진짜 내 것이 되는 것 같다. 애니메이션도 이런 식으로 차근차근 공부하다 보면 분명 문제점을 해결할 수 있을 거라 믿는다~