2026. 2. 27. 00:09ㆍUnreal
오늘 학습한 내용은 캐릭터와 관련된 내용을 학습했다.
캐릭터와 관련된 에셋을 다운받고 실행시켜보겠다.

이렇게 에셋을 다운받고 실행했다.
오늘 여기서 버전이 다른 에셋을 추가하는 방법을 배웠는데,

콘텐츠 드로어 창에서 Fab버튼을 눌러 라이브러리에 있는 에셋을 추가하면 버전이 다른 여러가지의 에셋을 추가할 수 있다는 것을 알게 되었다. 런처 등에서는 할 수 없어서 여러 방법을 찾아보았는데 쉽고 간단하게 할 수 있는 방법이 있었다.
먼저 캐릭터를 생성해보겠다.
블루프린트 클래스를 생성하고 캐릭터 버튼을 클릭한다.



그럼 다음과 같이 캐릭터를 생성할 수 있다.
보통 블루프린트 캐릭터를 생성하면 앞에 BP_라는 이름으로 시작해서 구분할 수 있도록 한다고 한다.
캐릭터 메시

캐릭터를 더블 클릭하면 캐릭터 편집 창으로 이동할 수 있다. 아무것도 없는 빈 캡슐만 있는 모습이다.
저기에 있는 파란 화살표가 월드의 방향이다.


여기서 메시 -> 스켈레탈 메시 에셋 -> 아까 다운 받은 에셋의 봇을 클릭해서 캐릭터를 가져온다.

캐릭터 메시가 공중에 떠있고 방향이 돌아가있다. 메시를 파란 화살표에 맞춰 돌려주고, 위치를 캡슐의 가운데로 맞춰준다.

카메라
카메라는 캐릭터를 보는 시점이다. 이 카메라로 1인칭, 혹은 3인칭으로 만들 수 있어 카메라의 위치와 거리가 굉장히 중요하다고 생각한다.
카메라 컴포넌트는 보통 스프링 암과 함께 사용한다.
캡슐 컴포넌트에 스프링 암 컴포넌트를 붙이고, 그 스프링 암에 카메라를 달아준다.


너무 아래쪽에 있는 것 같아 조금 위쪽 방향에서 보도록 수정해보겠다.

이제야 일반적인 게임에서 보던 그런 시점에서 보인다.
이제 이동을 구현해보겠다.
Enhanced Input System - Move
UE5에서 새롭게 제공되는 입력 시스템으로, 키보드, 마우스, 게임패드 등을 더 유연하게 지원하고, 복잡한 컨트롤 매핑도 쉽게 설정할 수 있도록 도와주는 시스템이다.
- 기존보다 더 명확한 입력 분기 가능
- 코드 없이도 시각적으로 입력 제어 가능
- 다양한 장치 지원(패드, 터치 등)
이 시스템을 통해 캐릭터의 이동과 시점을 훨씬 직관적으로 구현할 수 있다.
먼저 캐릭터가 움직이기 위해서는 언리얼 엔진에서 입력을 받아야한다. 입력을 매핑할 수 있게 입력 액션과 매핑 컨텍스트를 생성해준다.

이를 생성했으면 Move와 Look을 생성해준다.

여기서 Look은 마우스를 이용해서 카메라를 돌리는 역할을 하고, Move는 키보드를 이용해서 캐릭터를 움직일 것이다.

Look과 Move는 X, Y축을 모두 사용하기 때문에 액션을 더블클릭해서 설정값에서 Axid 2D를 선택한다. Move도 같은 값으로 세팅한다.

매핑 컨텍스트는 위와 같이 세팅한다. 액션에서 이벤트를 정의하고, 매핑 컨텍스트에서 키를 액션에 매핑해주는 개념이라고 생각하면 된다. 기능을 추가할거면 위 Move, Look처럼 액션을 생성하고 매핑컨텍스트에 추가하면 된다.

각 키별 이동방향에 대한 모디파이어를 설정한다.
캐릭터는 기본적으로 X축을 보도록 설정했기 때문에 W에 따로 모디파이어를 추가해줄 필요가 없다.
S는 W의 반대쪽인 뒤로 이동하기 때문에 X축의 부정값(Negate)을 넣어준다.
D는 오른쪽(Y축)으로 이동하기 때문에 Y축 방향으로 이동하게 하기 위한 스위즐 입력 축 값(Swizzle Input Axis Values)을 설정해주고,
A에는 오른쪽의 반대인 왼쪽으로 이동하기 때문에 스위즐 입력 축 값과 그의 부정을 설정해주면 왼쪽으로 이동하게 된다.
하지만 이렇게만 연결하고 실행하면 캐릭터는 움직이지 않는다. 아직 캐릭터와 연결되지 않았기 때문이다.
이제 캐릭터와 연결해보겠다.

블루프린트 이벤트 그래프에서 아래와 같이 노드들을 생성해준다.
AddMappingContext의 인풋 MappingContext에는 위에서 생성한 IMC_NBC_DefaultMappingContext를 넣어주면 된다.
이벤트가 시작됐을 때 Get Player Controller로 현재 플레이어의 컨트롤러에 연결된 인풋들을 찾아서 매핑 컨텍스트와 연동하는 이벤트이다.
이렇게하고 실행해보면 여전히 움직이지 않는 모습을 확인할 수 있다.
아직 캐릭터와 연결만 했을 뿐 이동을 하면 어떻게 이동을 하는지를 설정을 안했기 때문이다.


이벤트 그래프에서 우클릭 후 아까 만들었던 Move 노드를 검색해서 추가한다.
이벤트 노드의 Action Value 오른쪽을 클릭해서 구조체 핀 분할을 사용해 X축과 Y축 값을 각각 사용할 수 있도록 분할해줘야 한다.

이동 로직은 다음과 같다. 인풋 매핑 컨텍스트에서 설정해준 것과 같이 X값으로는 앞, 뒤 이동을 하며, Y값으로는 좌, 우 이동을 한다.
이 때 사용하는 노드들은 Get Actor Forward Vector와 Get Actor Right Vector이다. 이 두 노드는 월드를 기준으로 액터의 벡터값을 계산한 수를 받아 액션의 X, Y값 만큼 이동시켜준다.

뷰포트로 돌아가서 캐릭터를 선택 디테일 패널에서 possess를 검색한다. 한국어로 빙의라고 검색해도 된다.
플레이어 자동 빙의 탭에 Default에서 Player 0으로 변경한다. 그러면 정상적으로 이동해야 할 것이다.
Enhanced Input System - Look

시점 이동은 다음과 같다.
Move 때와 같이 구조체 핀 분할을 해서 X축은 Yaw(좌우), Y축은 Pitch(상하)에 연결해준다. 비슷하게 Roll도 있는데 이건 자동차 핸들처럼 돌아가는 것이다.
이렇게만 하면 상하는 돌아가지 않을 것이다.
캐릭터 디테일 창으로 다시 돌아가보자.

디테일 창에서 Controller를 검색해서 캐릭터 무브먼트(일반세팅)을 보면 폰 -> 컨트롤러 회전 피치 사용이 체크가 안되어 있는데 저 부분을 체크해줘야 한다.
다시 실행해보겠다.

캐릭터가 움직이고 마우스도 정상적으로 동작하는데 뭔가 이상하다. 마우스를 돌리니 시점만 돌아가는 것이 아닌 캐릭터 자체가 돌기 시작했다.
'폰' 카테고리의 컨트롤러 회전 사용은 캐릭터 전체와 연결되어 있기 때문이다.

그래서 저 폰 카테고리에 있는 컨트롤러 회전 사용 부분을 다 체크 해제하고 다시 만들어보겠다.


캐릭터 무브먼트 컴포넌트의 '무브먼트 방향으로 회전 조정'을 체크한다.


그 후 스프링 암 컴포넌트의 '폰 제어 회전 사용'을 체크해준다.
여기까지만 하면 잘 작동은 하지만 상하 카메라 이동이 평소 하던 게임들과는 좌우반전 되어 어색하다.

매핑 컨텍스트에서 마우스의 Y축에만 부정을 넣어 반전시켜주면 카메라 이동은 문제 없이 마무리 할 수 있다.
Enhanced Input System - Move 2
기존에 위에서 생성한 이동의 경우 '월드'를 기준으로 캐릭터의 회전을 구현해서 조금 수정하고 싶어졌다.
이 부분은 노드들을 현재 컨트롤러를 기준으로 구현한다.

Get Controll Rotation은 카메라가 바라보는 방향, 즉 플레이어가 보고 조준하는 방향을 대표하는 회전이다.
이를 추가하여 Get Actor Forward Vector에서 Get Forward Vector로 변경하고 핀분할하여 각각 세로축, 가로축을 연결하고 실행해보면,

정상적으로 움직인다. 하지만 아직 좌우이동이 월드의 방향인 것 같아 조금 불편하다.
어떻게 수정해야 할까?

여기서 월드의 기준으로 Y축으로의 이동이 어색하기 때문에 Y축의 문제라고 생각하고 Y축에 있는 Yaw값을 건드려보겠다.
이제 결과를 확인하기 위해 실행해보겠다.

정상적으로 캐릭터를 기준으로 좌우 이동이 원활하게 설정되었다!!
왜 그럴까?
첫번째는 Right(좌우 이동)에서 Roll이 연결되었다. 이 때문에 카메라 좌우 이동 방향이 좌우가 아니라 "기울기" 기준이 되었다. 카메라 Roll은 보통 0이기 때문에 좌우 이동이 이상하거나 제대로 안 움직일 수 있다. 그래서 Roll만 연결하면 정상적인 실행이 되지 않고, Yaw와 함께 사용해야 하거나 Yaw만 사용해야 정상적으로 실행된다.
오늘은 캐릭터의 이동을 구현해 봤는데, 내일은 이 캐릭터를 이용해서 간단한 플랫폼 게임을 만들어보려고 한다.
'Unreal' 카테고리의 다른 글
| 내일배움캠프 Day 6 플랫폼 게임 만들기 (0) | 2026.03.01 |
|---|---|
| 내일배움캠프 DAY5 블렌더 스페이스와 움직이는 액터 (0) | 2026.02.27 |
| 내일배움캠프 DAY3 블루프린트를 이용한 비주얼 스크립팅 (0) | 2026.02.26 |
| 내일배움캠프 DAY2 언리얼 엔진과 놀아보기 (0) | 2026.02.26 |
| 내일배움캠프 DAY 1 게임 엔진에 대해 알아보고 언리얼 엔진 설치해보기 (0) | 2026.02.25 |