1. 액터와 블루프린트
2. 오늘은 무엇을 배웠는가?
오늘은 액터를 레벨 위에 불러오는 방법과 플레이어 캐릭터를 지정하고 움직이게끔 키를 매핑하고 그에 맞는 애니메이션을 할당하는 방법, 블루프린트를 이용한 간단한 연산에 대하여 배울 수 있었다.
① 캐릭터를 만들어보자
일단 콘텐츠 탭 - Blueprint 폴더를 앞으로 만들 콘텐츠 등을 구분하기 쉽도록 만들어둔다.

후에 Blueprint 폴더 내에서 우클릭 후 블루프린트 클래스를 생성, 캐릭터를 골라준 후 해당 파일을 더블클릭하여 내부로 들어간다

컴포넌트에서 메시를 클릭하고 디테일에서 스플레시 메시 에셋을 클릭 미리 받은 에셋을 골라준다.

이후 캡슐에 맞게끔 메시의 위치와 방향등을 조정해준 다음 캡슐의 크기도 메시에 맞게끔 조정해 주면 기본 캐릭터 세팅은 끝나게 된다.
② 카메라를 설정해주자
컴포넌트에서 캐릭터를 눌러준 후 추가를 눌러 spring arm 컴포넌트와 camera 컴포넌트를 추가해 준다

그러면 사진과 같이 캐릭터 뒤통수를 쳐다보고 있는 카메라가 생김을 알 수 있다.

이제 적절히 카메라의 위치와 각도를 수정해 주며 본인이 원하는 시점을 비추도록 조정해 주면 된다.
③ 캐릭터를 움직이게 해 보자
블루프린트 클래스 캐릭터를 만들었던 것처럼 이번에는 플레이어가 입력한 것이 무엇이고 그에 따른 행동을 정의하기 위해입력 액션과 맵핑 콘텍스트를 만들어준다.

먼저 입력 액션 2가지는 모두 값 타입을 Axis2D로 설정해 준다.
이는 시점과 움직임 모두 Z축의 값이 필요 없기 때문이다. 만약 만들려는 게임이 무중력이나 수중과 같이
3차원 움직임이 필요할 경우에는 다른 값으로 설정해 주도록 하자.
이어서 매핑 콘텍스트에서는 캐릭터를 움직일 키 예컨대 WASD와 시점을 변경해 줄 동작(마우스의 XY 2D 축)을 설정해 준다.

여기서 짚고 넘어가야 할 부분은 캐릭터는 항상 X축을 바라보고 있다.
당연히 X축 방향으로 전진해야 하는 W키는 입력한 그대로 진행되게끔 아무런 모디파이를 설정하지 않는다.
X축의 음의방향 즉 반대방향으로 가야 하는 S키는 모디파이어를 통하여 부정 값을 넣어주면 해당 키 입력 시 캐릭터가 뒤로 가게 된다. 오른쪽으로 이동해야 하는 D키는 모디파이어의 스위즐 입력 축 값을 통하여 X축의 값을 Y축으로 할당해주어 오른쪽으로 가게 하면 된다.
그럼 왼쪽으로 이동해야하는 A키는 어떤가? D와 동일하게 스위즐 입력 축 값을 주고 거기에 부정을 추가해 준다면 자연스럽게 캐릭터가 왼쪽으로 가게 될 것이다.

이제는 매핑은 끝났으니 이를 이용하여 블루프린트를 작성해 줘야 한다.
캐릭터의 블루프린트 창을 열고 이벤트 그래프에 다음과 같이 블루프린트를 작성해 준다.

이제 플레이어 캐릭터인 액터가 생성되면 Get player controller를 통해 현재 플레이어의 컨트롤러 인풋을 사전에 매핑한 값으로 지정해 주게 된다.
그리고 각각 move와 lock에 관련하여 다음과 같이 작성해 주고 컴파일 후 프로젝트를 실행하면 캐릭터가 움직이는 것을 알 수 있다.

Get Actor Forward Vector, Get Actor Right Vector 이 2개의 노드들에서 월드를 기준으로 액터의 로컬 방향을 가져와서 월드 좌표계에서의 단위 벡터로 반환한 수를 받아 인풋 액션의 X, Y 값만큼 이동시켜 준다고 강의서에서 설명하는데 월드의 좌표를 기준으로 액터의 방향을 가져온 뒤 월드에서의 벡터로 반환해 주고 그 값만큼 액터를 이동시키는 듯하다.
시점은 이보다 단순하다. Move 때와 같이 yaw 인풋, pitch 인풋을 각각의 x축 y축 노드를 이어주면 끝이다.
이제 캐릭터를 골라주고 possess에서 player 0을 선택해 주면 캐릭터가 움직이기 시작할 것이다.
근데 뭔가 이상하다 마우스를 돌려주지 않으면 캐릭터는 한쪽 방향으로만 움직일 것이다.
이는 폰 카테고리의 디테일- Controller에서 다음과 같은 부분을 체크 해제해 주면 된다.

폰 카테고리의 컨트롤러 회전 사용은 캐릭터의 전체와 연결되어 있기 때문에 카메라만 회전하도록 옵션을 수정해 주는 것이다.
또한 캐릭터 무브먼트 컴포넌트의 무브먼트 방향으로 회전 조정을 체크, 스프링 암의 컴포넌트의 폰 제어 회전 사용을 체크해 주면
이제 캐릭터 메시가 자연스럽게 이동하며 시점이 회전하는 것을 볼 수 있다.
하지만 해당 조치를 하고 난 후에도 D키나 A키를 꾹 눌러보면 알 수 있지만 캐릭터가 한 방향으로 빙빙 도는 것을 알 수 있다.
이는 D나 A를 통한 방향은 캐릭터의 정면을 월드를 기준으로 하기 때문이다 즉 D키를 눌러 캐릭터의 정면이 살짝 오른쪽으로 돌면 다음에 누르는 D키는 다시 캐릭터의 방향을 회전시키기 때문에 빙빙 도는 모션이 나오는 것이다.
이를 해결하기 위해서 캐릭터의 벡터를 컨트롤러 위치에서 얻게끔 다음과 같이 수정해 보자.

이러면 이제 캐릭터의 정면이 아닌 카메라 시점을 기준으로 방향벡터를 얻기에 보다 자연스러운 움직임이 가능할 것이다.
자 이제 마우스 상하 움직임이 반전인 것만 해결해 주면 될 거 같다.

다음과 같이 메핑 콘텍스트에서 마우스 y축만 반전이 되도록 설정해 주면 된다!
3. 학습하며 겪었던 문제점
과제로서 캐릭터가 점프를 하게끔 블루스크린을 짜라 하셨다. 기본적으로 언리얼 엔진에는 점프 관련된 옵션이 있기에
스페이스바를 입력했을 때 점프가 작동하게끔 인풋액션 점프를 새로 만들어 준 다음 매핑 컨텍스트에 스페이스바를 맵핑해주려 했다.
여기서 문제가 발생한다. 처음에는 단순하게 점프는 한 축으로만 움직이기에 인풋액션의 값을 Axis1D로 주었는데 잘 되지 않았다.
해당 값은 x축을 기준으로 하는데 매핑 콘텍스트에서 어떻게 설정을 해야 이 x축을 z축의 값으로 인식하게끔 할 수 있는지 몰랐기 때문이다.
결론은 Axis1D가 아닌 Digital 값으로 설정하면 그만 이었다. Digital 값은 참인지 거짓인지 2가지만 있으면 되기에 별 다른 설정 없이 스페이스바를 눌렀으면 점프 노드가 작용하게끔 하면 되었던 것이다.

좀 허무하지만 의외로 간단하게 해결할 수 있어서 다행이다.
4. 내일 학습할 것은 무엇인지
사실 오늘 배운 내용은 이 밖에도 애니메이션, 간단한 블루프린트를 이용한 연산 등이 있지만 글 내용이 너무 길어 이쯤으로 하겠다.
내일은 1주 차에 배운 내용을 바탕으로 사전캠프 퀘스트를 해볼까 한다. 처음이라 낯설고 뭔 소리인지 이해하기 한참 오래 걸리지만 그만큼 재미있던 것 같다.
'unreal 5기' 카테고리의 다른 글
| 250721 사전캠프 6일차 TIL 액터와 상호작용 그리고 자동문 (3) | 2025.07.21 |
|---|---|
| 250718 사전캠프 5일차 TIL 사전캠프 퀘스트 2 (1) | 2025.07.18 |
| 250717 사전캠프 4일차 TIL 사전캠프 퀘스트 수행하기 (0) | 2025.07.17 |
| 250715 사전캠프 2일차 TIL 게임 엔진 (1) | 2025.07.15 |
| 내가 생각하는 게임 개발자 (0) | 2025.07.14 |