플레이어 캐릭터 만들기 | Component | Enhanced Input System | Pitch, Yaw, Roll | Merge Actors

김여울·2025년 5월 20일
0

내일배움캠프

목록 보기
2/111
post-thumbnail

📍 Unreal 게임개발종합반 1주차발종합반 1주차 8강

캐릭터의 움직임을 구현하기 위해 캐릭터에 필요한 컴포넌트를 추가하고, 행동을 제어하는 Input Action과 Input Mapping Context를 설정했다. 이 과정까지는 캐릭터가 걷거나 뛰는 자연스러운 움직임이 구현되지 않으며, 이후 애니메이션과 블렌드 스페이스를 적용해야 플레이어 캐릭터가 완성된다.

플레이어 캐릭터 만들기

1️⃣ 블루프린트 클래스 만들기

클래스 란?

  • 재활용 가능한 설계도
  • 액터를 블루프린트 클래스로 만들면 여러 레벨이나 프로젝트에서 반복해서 생성(스폰)하고 사용 가능
  • 변경사항이 생기면 블루프린트 클래스만 수정하고, 참조하는 모든 레벨에 적용돼서 유지보수에도 수월

🔻BP_Character

  • 블루프린트 클래스 생성 > 캐릭터


2️⃣ 메시 에셋 적용 후 컴포넌트 추가하기

  • 메시에서 스켈레탈 메시 에셋에 SKM_Bot 적용

  • 캡슐 컴포넌트 사이즈 조절

  • Camera & SpringArm 컴포넌트 추가

    • SpringArm : 캐릭터와 카메라 사이에 장애물이 있으면 스프링암을 줄여서 카메라가 장애물을 뚫고 들어가지 않도록 함

3️⃣ 플레이어 자동 빙의 설정하기

  • Possess

    • 컨트롤러(플레이어 컨트롤러나 AI 컨트롤러)가 캐릭터나 폰을 소유 ➡ 조종(컨트롤) 할 수 있음
  • 플레이어 컨트롤러 인덱스

    • Player 0 보통 1인칭 혹은 기본 플레이어 컨트롤 (싱글 플레이)
    • Player 1, 2, 3, 4 추가 플레이어들 (멀티플레이어용)
    • Disabled 자동 빙의 안 함 (수동으로 컨트롤러 지정 필요)

❓ 컨트롤러 인덱스를 어러 개 추가한 게임들은 뭐가 있을까
▶ 스트리트파이터6

  • 1대1 대전 게임
  • Player 0, Player 1 두 개의 컨트롤러 필요함

▶ 스플래툰3

  • 4대4 팀 대전 게임
    • 8인으로 구성 - Player 0 ~ Player 7 필요
    • 팀 구분은 컨트롤러 인덱스와 별개로 게임 로직에서 처리한다

  • 컨트롤러 인덱스 = “누가 누구 캐릭터를 조종하는가”
    팀 ID(TeamID) = “플레이어가 어떤 팀에 속하는가”
    📎Epic Games Developer - Team Multiplayer Balancing


4️⃣ Enhanced Input System

개념설명예시
Input Action무슨 행동을 할 건지 (행동의 정의)"점프", "이동", "발사" 등
Input Mapping Context어떤 키가 어떤 행동을 할지 매핑 (입력 설정)Spacebar → "점프", W → "이동"

🔻IA_Move

  • 앞, 뒤, 왼쪽, 오른쪽 이동 ➡ XY축 (2차원)

    🌀 3D 좌표계에서의 각 축 방향

    축 이름방향 (+)방향 (−)
    X축앞쪽 (Forward)뒤쪽 (Backward)
    Y축오른쪽 (Right)왼쪽 (Left)
    Z축위쪽 (Up)아래쪽 (Down)

🔻IMC_NBC_DefaultMappingContext
▶ 스위즐 입력 축 값 : Y축

🔻IA_Look

  • 마우스를 사용해 캐릭터의 시야를 앞, 뒤, 왼쪽, 오른쪽으로 조절 ➡ XY축 (2차원)


🔻 IA_Jump

  • Boolean (Triggered / Not Triggered) ➡ 눌렀을 때 true, 떼면 false
    • (예) 스페이스바를 누르면 캐릭터가 점프

💥 캐릭터의 점프가 너무 부자연스러움

  • 체공 시간 줄이기
    ▶ 중력스케일 높이고 점프Z 속도 빠르게

5️⃣ 캐릭터 블루프린트 클래스에 인풋 액션 적용하기

🔻IA_Move


▶ 값을 받도록 설정만 함
▶ 값을 받은 후 캐릭터가 행동하도록 명령하는 부분은 구현하지 않았다

🔻IA_Look


Add Movement Input 컨트롤러가 움직일 수 있게 해줌
▶ X축(전진, 후진) Y축(오른쪽, 왼쪽) ➡ Add Movement Input 2개 필요하다

💥 마우스 이동으로는 시야의 위아래 움직임이 없음 + 캐릭터가 위아래로 이동

  • 카메라만 움직이도록 설정하기
    📍 BP_Character 블루프린트 디테일

    📍 BP_Character 캐릭터 무브먼트 ▶ 이동하는 방향으로 캐릭터 메시를 돌려줌

    📍SpringArm
    ▶ 메시에 담긴 값을 직접 상속받아 처리 ❌
    스프링 암이 회전을 대신 받아서 처리 ⭕
    왼쪽, 오른쪽으로 이동할 때는 폰의 방향을 회전시켜준다


    🌀 Pitch, Yaw, Roll 축별 회전 방향

    회전 이름기준 축방향 설명 (일반)비행기 기준 동작 설명
    PitchX축위/아래 회전 (Up/Down)앞부분이 위로 들리거나 아래로 내려감
    YawY축좌/우 회전 (Left/Right)비행기 전체가 왼쪽 또는 오른쪽으로 회전
    RollZ축좌/우 기울기 (Tilt)양 날개가 좌우로 기울어지며 회전

    📎Airplane control - Roll, Pitch, Yaw
    📎Pitch Yaw and Roll

  • 마우스 Pitch값 변경하기 - Y축 반전

    ▶ Y축만 부정 ☑ - 마우스 상하 움직임이 반전됨
    ▶ 마우스를 위로 올리면 시야가 내려가고, 아래로 내리면 시야가 올라간다.

💥 캐릭터가 D/A 키를 누르면 해당 방향으로 빙글빙글 돈다

  • 액터 기준으로 오른쪽으로 돈다
  • Get Controller Rotation 이용해
    컨트롤러가 보는 방향에 맞춰 설정하려면


❓회전 입력 시 Yaw 축만 사용하는 이유

  • 캐릭터 이동은 땅 위 좌우 방향(수평 방향) 기준이라 회전 입력 시 Yaw (Z축 회전)만 사용함
  • Pitch(X축), Roll(Y축)은 무시함
    ➡ Pitch(X축)나 Roll(Y축)이 포함되면 캐릭터가 위아래나 옆으로 기울어지는 상황까지 반영됨
    ➡ 컨트롤러가 보는 방향의 좌우 회전만 반영해 이동 방향을 구함

🔻 IA_Jump

💭

오늘 라이브 세션에서는 게임 개발 과정에 대해 배우고, 언리얼 엔진 기본 툴과 액터 배치를 익혔다.

게임회사에는 게임개발자 뿐만 아니라 다양한 직업이 있고, 라이브 게임 회사가 야간 교대근무를 한다는 점도 처음 알게 되었다. 앞으로 게임을 하다가 서버가 불안정할 때 이 부분이 떠오를 것 같다.

게임 제작이 매우 긴 프로젝트임을 다시 한 번 느꼈으며 앞으로 내가 어떤 길을 갈지 생각해봐야겠다.

액터 배치 실습에서는 레벨에 있던 액터들을 모아 햄버거를 만들었다.

스태틱 메시를 하나씩 배치하고 이동시키는 작업이 번거로웠는데, TIL을 작성하면서 블루프린트를 활용해 여러 메시를 한꺼번에 합칠 수 있다는 것을 알게 되었다...

📌 블루프린트로 여러 메시 합치기

1️⃣ BP_Hamburger 블루프린트 생성
2️⃣ Static Mesh 컴포넌트 추가 (빵, 패티, 상추, 치즈 등)
3️⃣ 메시 지정하고 위치 조절
4️⃣ 씬에 배치

📌 Merge Actors

📎 Merge/Combine selected actors into a single static mesh in Unreal Engine 5
📎 Deep Dive into Merging | Unreal Engine 5 features

📝 과제

💥 메시 하나하나에 콜리전 프리셋을 설정했음에도 캐릭터가 햄버거를 통과하는 문제가 발생했다.

위의 영상처럼 Merge Actors 기능에서 Blocking Volume 옵션을 설정하면 캐릭터가 메시와 충돌하도록 한 번에 설정 가능할 것 같다.

0개의 댓글