Unreal Engine 클래스 - ACharacter

GwakItect·2025년 7월 8일

언리얼 엔진5 기초

목록 보기
8/9

ACharacter


ACharacter 클래스는 언리얼 엔진에서 플레이어 혹은 AI 가 조종하는 플레이어블 캐릭터를 위해 설계된 Pawn 기반의 클래스이다. APawn 을 상속받아 생성되기 때문에 컨트롤러에 의해 빙의(Possess)가 가능하며, 기본적인 이동·점프·걷기·낙하·수영 등 대부분의 기능이 미리 구현되어 있다.
(그러나 Character 는 이족 보행 객체에 매우 특화되어 있어 Pawn 에 비해 형태가 한정적이라는 단점이 있음)

상속 구조


  • UObjectAActorAPawnACharacter

기본적으로 포함하는 컴포넌트


  • UCapsuleComponent (캡슐 컴포넌트)
    -기본 루트 컴포넌트(Root Component)
    -물리적 충돌과 이동의 기준이되는 단순화된 충돌체

  • UArrowComponent (화살표 컴포넌트)
    -에디터에서 캐릭터가 바라보는 방향을 시각적으로 표시 (게임 내에서 영향 X)

  • USkeletalMeshComponent (스켈레탈 메시 컴포넌트)
    -시각적인 외형 메시이자 뼈대(Skeleton)를 가진 3D 모델
    -애니메이션 블루프린트를 통해 애니메이션 재생
    -캡슐 컴포넌트 내에 위치

  • UCharacterMovementComponent (캐릭터 무브먼트 컴포넌트)
    -ACharacter 의 핵심. 모든 움직임을 처리하는 복잡하고 강력한 컴포넌트
    -걷기·달리기·점프·걷기·낙하·수영·비행 등 다양한 모드 지원
    -네트워크 환경에서의 움직임 보정 자동으로 처리




ACharacter 의 주요 멤버 변수


멤버 변수설명
USkeletalMeshComponent* Mesh캐릭터의 시각적인 3D 스켈레탈 메시 컴포넌트
UCapsuleComponent* CapsuleComponent충돌 판정을 위한 캡슐 컴포넌트
bool bIsCrouched현재 캐릭터가 앉아 있는지 여부
bool bWasJumping최근에 점프를 시도했는지 여부
float JumpMaxHoldTime점프 버튼을 누르고 있을 수 있는 최대 시간
float BaseTurnRate, float BaseLookUpRate회전과 위아래 시점 조작 속도 기본값
FVector LastUpdateVelocity마지막 틱에서 업데이트된 속도 (캐릭터 이동 예측 등에 활용)
bool bPressedJump점프 입력이 눌려 있는 상태인지 여부


ACharacter 의 주요 멤버 함수


함수 이름설명
Jump()캐릭터를 점프 상태로 만듭니다. 내부적으로 bPressedJump를 true로 설정하고 이동 컴포넌트에 점프 요청
StopJumping()점프 입력을 멈췄다고 알림
Crouch() / UnCrouch()앉기/일어서기 기능
LaunchCharacter(FVector LaunchVelocity, bool bXYOverride, bool bZOverride)지정된 방향으로 캐릭터를 강제로 날림 (예: 점프패드)
OnJumped_Implementation()점프 직후 호출되는 이벤트 (오버라이드 가능)
Landed(const FHitResult& Hit)땅에 착지했을 때 호출되는 함수 (오버라이드 가능)
IsJumpProvidingForce()점프 중 힘이 가해지는 상태인지 확인
GetBaseAimRotation()캐릭터가 조준하는 방향을 반환
IsCrouched()캐릭터가 현재 앉아 있는 상태인지 확인
GetMesh()메시 컴포넌트를 반환 (애니메이션 처리에 주로 사용됨)




UCharacterMovementComponent


CharacterMovementComponentCharacter 클래스의 핵심

UCharacterMovementComponentEMovementMode 열거형을 통해 캐릭터의 이동 상태에 대해 관리하며, 상황에 따라서 자동으로 전환하는 기능을 갖추고 있다.

  • MOVE_Walking: 땅 위에서 걷거나 달리는 상태
  • MOVE_Falling: 공중에 있는 상태 (점프 및 낙하 상태)
  • MOVE_Swimming: 물 속에 있는 상태
  • MOVE_Flying: 날아다니는 상태
  • MOVE_NavWalking: 네비게이션 메시 위를 따라서 이동하는 상태 (주로 AI용)
  • MOVE_Custom: 사용자 정의 이동 모드




주요 속성 (이동, 점프 및 중력)


속성설명
MaxWalkSpeed걷기 최대 속도
MaxWalkSpeedCrouched앉았을 때 속도
MaxAcceleration가속 최대치
BrakingFrictionFactor정지 시 감속 비율
GroundFriction지면 마찰력
bOrientRotationToMovement이동 방향에 따라 회전할지
JumpZVelocity점프 시 위쪽 힘
GravityScale중력 배수 (기본 1.0)
AirControl공중 제어력
BrakingDecelerationFalling공중에서 감속력

주요 함수


함수설명
SetMovementMode(MOVE_*)이동 모드 전환
Launch(FVector LaunchVelocity)지정 방향으로 캐릭터 날리기
IsFalling()공중에 있는지 확인
IsMovingOnGround()지면 위에 있는지 확인
AddImpulse(FVector)외부 힘(순간적) 적용
AddForce(FVector)외부 힘(지속적) 적용
StopMovementImmediately()즉시 정지
SafeMoveUpdatedComponent()충돌 감안 이동 수행 (AI, 플레이어 모두 활용)

활용 예시


CharacterMovementComponent 헤더 파일

#include "GameFramework/CharacterMovementComponent.h"

GetCharacterMovement()->JumpZVelocity = 1000.f;
GetCharacterMovement()->AirControl = 0.7f;
  • 해당 캐릭터의 점프 힘을 1000 으로 설정
  • MOVE_Falling 상태 움직임 제어를 0.7 로 설정 ( 0 ~ 1 )




GetCharacterMovement()->MaxWalkSpeed = 1000;
  • 1000 을 넣었으나 위와 같은 방식으로 Sprint 구현




GetCharacterMovement()->Launch(FVector(500.f, 0.f, 1500.f));
  • 해당 캐릭터 날리기

0개의 댓글