본문 바로가기
프로그래밍

👨‍💻 [Unreal] 언리얼 엔진에서 캐릭터 무브먼트 컴포넌트 (CharacterMovementComponent) 란 무엇이고, 어떻게 활용할 수 있나요?

by 밝음의기둥 2024. 12. 27.
반응형

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."


👨‍💻 안녕하세요, 윌리 프로젝트의 윌리 입니다.

언리얼 엔진에서 캐릭터 무브먼트 컴포넌트 (CharacterMovementComponent) 란 무엇이고, 어떻게 활용할 수 있는지 간략히 알아보았습니다.


질문 >

언리얼 엔진에서 캐릭터 무브먼트 컴포넌트 (CharacterMovementComponent) 란 무엇이고, 어떻게 활용할 수 있나요?

답변 >

캐릭터 무브먼트 컴포넌트(CharacterMovementComponent)는 언리얼 엔진에서 캐릭터의 이동 및 물리적 동작을 제어하는 핵심 컴포넌트입니다. 캐릭터 클래스(ACharacter)에서 기본적으로 제공되며, 걷기, 뛰기, 점프, 수영, 비행 등 다양한 이동 방식을 처리합니다.


1. 캐릭터 무브먼트 컴포넌트의 주요 역할

  • 중력 및 물리 연산: 중력 효과와 이동 충돌을 처리.
  • 다양한 이동 모드: 걷기, 비행, 수영 등 여러 이동 방식을 지원.
  • 네트워크 동기화: 멀티플레이어 환경에서 캐릭터 이동을 동기화.
  • 상태 전환: 이동 속도, 방향, 가속도 등을 동적으로 변경.

2. 이동 모드(Movement Mode)

캐릭터 무브먼트 컴포넌트는 여러 이동 모드를 제공합니다. 이들은 MovementMode 속성을 통해 설정됩니다.

2.1 걷기 (Walking)

  • 캐릭터가 지면과 접촉한 상태에서 이동.
  • 기본적으로 중력, 마찰, 경사면을 고려.

2.2 비행 (Flying)

  • 중력을 무시하며 자유롭게 이동.
  • 주로 공중에 떠 있는 캐릭터나 탈것 등에 사용.

2.3 수영 (Swimming)

  • 물 안에서의 움직임을 시뮬레이션.
  • 물 저항에 따른 이동 속도 감소를 지원.

2.4 낙하 (Falling)

  • 공중에서 중력의 영향을 받는 상태.
  • 점프 후 착지하거나 높은 곳에서 떨어질 때 활성화.

2.5 관성 이동 (Custom)

  • 사용자 정의 이동 모드. SetMovementMode()를 통해 구현.

3. 주요 속성 및 메서드

3.1 이동 속성

  • MaxWalkSpeed: 걷기 속도의 최대값.
  • MaxWalkSpeedCrouched: 웅크린 상태에서의 최대 속도.
  • MaxSwimSpeed: 수영 속도.
  • MaxFlySpeed: 비행 속도.

3.2 물리 속성

  • GravityScale: 중력의 강도.
  • AirControl: 공중에서 이동 방향을 제어할 수 있는 정도.
  • JumpZVelocity: 점프의 초기 속도.
  • BrakingDecelerationWalking: 걷기 상태에서의 감속.

3.3 충돌 및 지형 처리

  • GroundFriction: 지면에서의 마찰.
  • WalkableFloorAngle: 캐릭터가 걸을 수 있는 지면의 최대 경사각.
  • WalkableFloorZ: 지면의 법선 벡터와 비교하여 걷기가 가능한지 판단.

4. 캐릭터 무브먼트 컴포넌트 설정 방법

4.1 블루프린트에서 설정

  1. CharacterMovement 컴포넌트를 선택.
  2. Details 패널에서 속성 조정:
    • 이동 속도(Max Walk Speed).
    • 중력(Gravity Scale).
    • 점프 높이(Jump Z Velocity).

4.2 C++에서 설정

void AMyCharacter::BeginPlay()
{
    Super::BeginPlay();

    // 이동 속도 설정
    GetCharacterMovement()->MaxWalkSpeed = 600.0f;

    // 점프 설정
    GetCharacterMovement()->JumpZVelocity = 420.0f;

    // 공중 제어 설정
    GetCharacterMovement()->AirControl = 0.5f;
}


5. 사용자 정의 이동 모드(Custom Movement Mode)

사용자 정의 이동 모드는 MovementMode를 확장하여 특정 동작을 구현할 수 있습니다.

5.1 CustomMovementMode 속성

  • MovementMode가 MOVE_Custom으로 설정되었을 때, 세부 동작을 구분하는 데 사용.

5.2 C++로 사용자 정의 구현

  1. 사용자 정의 이동 모드 설정:
GetCharacterMovement()->SetMovementMode(MOVE_Custom, 1); // 1: 사용자 정의 모드 식별자

  1. 사용자 정의 로직 오버라이드:
void UMyCharacterMovementComponent::PerformMovement(float DeltaTime)
{
    if (MovementMode == MOVE_Custom)
    {
        // 사용자 정의 이동 로직
    }
    else
    {
        Super::PerformMovement(DeltaTime);
    }
}


6. 활용 사례

6.1 플레이어 이동 구현

  • 걷기, 뛰기, 점프, 웅크리기 등 캐릭터 이동의 기본 구현.
  • 예: 캐릭터가 지형에 따라 속도를 조정하거나 점프를 제어.

6.2 특수 이동 구현

  • 날아다니는 캐릭터 또는 물속에서 이동하는 캐릭터.
  • 예: 비행 모드 활성화 시 중력을 무시하고 자유 이동.

6.3 멀티플레이어 게임

  • 네트워크 환경에서 캐릭터 이동을 클라이언트-서버 간 동기화.

6.4 트래버설 시스템

  • 벽 달리기, 로프 잡기, 경사로 미끄러지기 같은 동작.

7. 디버깅 및 최적화

7.1 디버그 시각화

  • ShowDebug Character 명령어를 사용하여 캐릭터 무브먼트 정보를 시각화.

7.2 문제 해결

  • 충돌 문제: 캐릭터 캡슐 크기 및 WalkableFloorAngle 확인.
  • 이동 반응 속도: 속성(BrakingDecelerationWalking, AirControl) 조정.

캐릭터 무브먼트 컴포넌트는 다양한 이동 시스템을 구현하는 데 필수적인 도구입니다. 기본 제공되는 기능을 활용하면 대부분의 게임플레이 요구사항을 충족할 수 있으며, 필요 시 C++를 통해 확장하여 더욱 복잡한 이동 시스템을 구현할 수 있습니다.



🎬 유튜브 채널 🎬

 

위로그@WiLog

📢 안녕하세요, 위로그@WiLog 시청자 여러분, 저는 윌리(Willee) 입니다. 📢 위로그@WiLog 는 자기계발을 목적으로 하는 채널 입니다. 📢 오늘도 즐겁게~ 자신을 위한 계발을 함께 해보아요~ d^_^b 📌

www.youtube.com

🎬 치지직 채널 🎬

 

위로그 채널 - CHZZK

지금, 스트리밍이 시작됩니다. 치지직-

chzzk.naver.com


반응형