ACharacter 클래스는 언리얼 엔진에서 플레이어 혹은 AI 가 조종하는 플레이어블 캐릭터를 위해 설계된 Pawn 기반의 클래스이다. APawn 을 상속받아 생성되기 때문에 컨트롤러에 의해 빙의(Possess)가 가능하며, 기본적인 이동·점프·걷기·낙하·수영 등 대부분의 기능이 미리 구현되어 있다.
(그러나 Character 는 이족 보행 객체에 매우 특화되어 있어 Pawn 에 비해 형태가 한정적이라는 단점이 있음)
상속 구조
UObject→AActor→APawn→ACharacter
기본적으로 포함하는 컴포넌트
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()메시 컴포넌트를 반환 (애니메이션 처리에 주로 사용됨)
CharacterMovementComponent는
Character클래스의 핵심
UCharacterMovementComponent 는 EMovementMode 열거형을 통해 캐릭터의 이동 상태에 대해 관리하며, 상황에 따라서 자동으로 전환하는 기능을 갖추고 있다.
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;
GetCharacterMovement()->Launch(FVector(500.f, 0.f, 1500.f));