[내일배움캠프] 베이스캠프

[내배캠] 3일차 밀린 진도 따라가기(2)

홍이니 2026. 6. 23. 17:32

지난 시간에 이어서 오늘도 출석 못한 날들의 진도를 따라가기 위한 시간을 가졌습니다.

 

먼저 게임 엔진을 사용하여 게임을 개발하는 이유는
게임에서 다루는 요소(그래픽, 사운드, 물리 연산, 네트워크 등)를 손 쉽게 다룰 수 있도록 기능을 제공하는 종합 개발 도구이기 때문입니다.

게임 엔진 없이 게임을 개발하려면 요소 하나하나에 많은 시간을 들여 직접 구현해야 되지만 엔진을 사용하면 이미 검증된 기능을 사용하여 빠르게 결과물을 만들어 낼 수 있습니다.

 

다시 Unreal 엔진으로 와서 아웃라이너 창은 현재 뷰포트에 있는 모든 액트를 볼 수 있는 창입니다.

액트를 선택하고 F키를 누르면 그 액트에게 바로 이동이 됩니다.

아웃라이너에 있는 눈동자 버튼을 누르면 뷰포트에서 보이게 혹은 안 보이게 설정할 수 있습니다.

선택된 액터는 디테일 창에서 액터의 설정 값을 볼 수 있습니다.(Transform 값, Color 값 등)

 

액터와 인스턴스

액터는 뷰포트(월드)에 생성된 Object(물체)이고 인스턴스는 액터가 되는 원본 Object(물체)라고 생각하면 됩니다.

액터의 디테일 값을 변경하여 형태가 변해도 인스턴스의 형태, 모양은 변하지 않습니다.

 

레벨

Unreal에서 레벨은 공간, 맵 과 같은 느낌으로 포토샵에서 레이어 같은 개념으로 저는 이해했습니다.

기본이 되는 퍼시스턴트 레벨을 생성하고 그 안에 서브 레벨을 생성하여 액터들을 넣거나 게임을 개발할 수 있습니다.

 

컨트롤러

컨트롤러는 플레이어가 Pawn, Character를 움직이게 하기 위한 도구이고 컨트롤러는 Pawn(폰)을 소유하여 직접 제어합니다.

그리고 소유 상태를 바꿔 다른 폰을 조종하거나 새로운 캐릭터로 교체할 수 있습니다.

 

AI 컨트롤러

AI 컨트롤러는 NPC나 몬스터의 인공지능 로직을 담는 컨트롤러 입니다.

 

액터의 기능을 상속받아 조종 가능한 기능을 더한 클래스가 Pawn(폰)입니다.

Pawn(폰)의 기능을 상속받아 이동 로직 등을 더한 클래스가 Character(캐릭터)입니다.

 

액터의 종류

기본 액터는 아무런 기능이 없고 실체가 없는 액터이지만 마커의 기능으로 사용할 수 있고 나중에 트리거로 사용하기 위해 기능을 추가 해줄 수 있는 액터 입니다.

스태틱 메시 액터는 기능은 없지만 형태와 실체가 있는 액터로 나중에 기능을 추가해 줄 수 있는 액터 입니다.

라이트 액터는 빛의 기능을 하는 액터로 디렉셔널 라이트와 스카이 라이트는 레벨 전체에 영향을 주는 광원, 햇빛이나 반사광 등을 표현하는 라이트 액터이고 포인트 라이트, 스포트 라이트, 렉트 라이트는 조명 등의 광원을 표현할 수 있는 라이트 액터 입니다.

 

캐릭터 만들기

새 프로젝트를 생성해 주었습니다.
그리고 BluePrints 폴더와 Inputs 폴더를 만들었습니다.

 

콘텐츠 브라우저에서 BulePrints 폴더 안에 블루프린트 클래스 하나를 생성하여 BP_Character로 이름을 설정하였습니다.

 

추가로 Inputs 폴더 안에 입력 액션을 선택하여 카메라 입력을 담당하는 IA_Look, 캐릭터 움직임을 담당하는 IA_Move와 이 입력 값들을 맵핑하는데 필요한 입력 매핑 컨텍스트를 IMC_DefaultMappingContext로 생성해주었습니다.

 

그리고 BP_Character를 클릭하여 들어와서 SpringArm과 Camera를 추가하고 Camera는 SpringArm에 속하도록 설정하였습니다.

SpringArm은 게임을 해보면 카메라의 거리가 일정하게 유지 되다가 외부 물체에 맞추어 거리가 줄어들었다가 늘어나는 효과를 줍니다.

 

BP_Character의 메시(CharacterMesh) 컴포넌트를 선택 후 디테일에서 스켈레탈 메시 에셋을 원하는 에셋을 가져와 바꿔주고 메시에 맞게 트랜스폼 값을 변경해주었습니다.

 

다시 뷰포트 화면으로 넘어와 오른 쪽에 디테일에서 Possess를 검색하면 게임 시작 시, 플레이어의 자동 빙의를 Player 0 으로 설정해주어야 캐릭터를 조종할 수 있는 상태가 됩니다.

 

아까 만들어 주었던 IA_Move와 IA_Look을 설정해주었습니다.

 

그리고 IA_Move와 IA_Look을 IMC_DefaultMappingContext에 맵핑해주면 이제 플레이어의 입력을 받을 준비가 끝났습니다.

 

다시 BP_Character로 돌아와서 중앙 상단에 이벤트그래프를 입력하여 이미지와 같이 설정해주면 캐릭터가 움직이고 마우스 움직임에 따라 캐릭터가 함께 움직이고 위, 아래로는 카메라가 움직이지 않습니다.

 

BP_Character의 가장 상위 컴포넌트인 BP_Character (셀프)에서 디테일에 컨트롤러를 검색하시면 폰 설정이 나오는데 활성화 되어있는 설정을 모두 비활성화 해주었습니다.

 

추가로 이번에는 BP_Charater의 SpringArm에서 디테일 중간 쯤 보시면 카메라 세팅이 있는데 이곳에서 폰 제어 회전 사용을 활성화 해주었습니다.

 

마지막으로 컴포넌트 가장 아래의 캐릭터 무브먼트에서 디테일에 무브먼트 방향을 검색하면 회전 세팅이 나오고 이 설정을 활성화 해주었습니다.

 

드디어 키보드를 이용해 캐릭터를 움직이고 별개로 마우스를 통해 카메라의 상하좌우를 조종하는 게임을 완성하였습니다.

하지만 현재 게임은 실행 후 오른 쪽 혹은 왼 쪽 입력을 할 경우 캐릭터가 빙글빙글 도는 형태입니다.

 

따라서 그것을 카메라 시아에서 오른 쪽 입력을 하면 오른 쪽으로 벡터 값을 주어 캐릭터가 진행하고 왼 쪽 입력을 하면 왼 쪽으로 벡터 값을 주어 캐릭터가 왼 쪽으로 진행할 수 있도록 변경하겠습니다.

 

다시 이벤트 그래프에서 화면에 나와있는 모양으로 설정을 해주고 원래 사용하던 로직의 IA_Move Triggered 연결을 끊어 주시면 자연스럽게 캐릭터가 움직이는 것을 확인할 수 있었습니다.

 

오늘은 먼저 개발을 해보고 글을 작성해서 글이 많이 미숙할 수 있는데 긴 글 읽어주셔서 감사합니다.
다음에 또 열심히 공부하여 만나뵙겠습니다!