액터 (Actor)
- 컨텐츠를 구성하는 기본 단위
- class AActor : public UObject
- 월드안에 배치되어 상호작용 하거나 동작할 수 있는것.
- 입력처리를 위한 컨트롤러가 없다.
- Pawn, Character에서의 사용 가능성 및 GetOwner()를 사용한 컨트롤러 접근을 위해 Actor.h내 전방선언
- Actor 기반의 Trigger를 참조하거나 상호작용하기위해
- 입력 이벤트를 바인딩하여 입력처리가 가능하다 (문열기 상호작용 등)
- 입력이 필요없거나 환경 요소 및 비활성 오브젝트 구현시 사용
- Translation : SetActorLocation / AddActor[Local,World]Offset
- Rotate : SetActorRotation / AddActorWorld[Local,World]Rotation
- Transform : SetActorTransform(FTransform)
폰 (Pawn)
- Actor를 상속받는 하위클래스
- class APawn : public AActor, public INavAgentInterface
- 컨트롤러를 통해 AI 조작 또는 플레이어 빙의가 가능한 객체
- SetupPlayerInputComponent를 사용한 입력처리 가능
- C++ Class 생성시 RootComponent는 nullptr이다.
- 개발자가 명시적으로 Component를 추가해야한다.
- 언리얼 엔진 내 내비게이션 기능을 통해 이동 제어 가능
- NavMovementComponent 기반의 Component를 통해 제어
- 월드 내 내비게이션 메시를 기반으로 경로를 계산한다. (NavMeshBoundsVolume)
- AIController과 연동하여 MoveToLocation, MoveToActor를 사용한 이동 제어
- AI Controller / Player Controller를 통해 조작이 필요한 객체들을 대상으로 사용한다.
- 차량, 드론, 비행기 등
- AI - 인간형이 아닌 오브젝트
- Rotation : AddController[Roll,Pitch,Yaw]Input
- AI : MoveToLocation / MoveToActor
캐릭터 (Character)
- Pawn을 상속받는 하위클래스
- class ACharacter : public APawn
- 인간형 폰이며, 플레이어 또는 NPC의 주요 컴포넌트들을 포함하고 있다.
- CapsuleComponent(RootComponent) : 충돌처리
- SkeletalMeshComponent : 캐릭터의 3D모델 및 애니메이션 렌더링
- CharacterMovementComponent : 이동(걷기, 점프, 중력, 앉기 등)처리
- 멀티플레이 네트워크 환경에서 캐릭터들의 움직임을 자동으로 동기화 한다.
- Character 생성자 내 리플리케이션 활성화가 되어있다.
- CharacterMovementComponent 내 추가 이동 함수
- LaunchCharacter - 물리처리를 통한 이동
- MaxWalkSpeed - 걷기 속도 변경
- Crouch()시 기존의 AddMovementInput()과의 속도차이를 볼 수 있다.
Character.cpp 생성자 - Default Value, Default Component Setting
ACharacter::ACharacter(const FObjectInitializer& ObjectInitializer)
: Super(ObjectInitializer)
{
// ...
bUseControllerRotationPitch = false;
bUseControllerRotationRoll = false;
bUseControllerRotationYaw = true;
// CapsuleComponent
CapsuleComponent = CreateDefaultSubobject<UCapsuleComponent>(ACharacter::CapsuleComponentName);
CapsuleComponent->InitCapsuleSize(34.0f, 88.0f);
CapsuleComponent->SetCollisionProfileName(UCollisionProfile::Pawn_ProfileName);
RootComponent = CapsuleComponent;
// Arrow Component
ArrowComponent = CreateEditorOnlyDefaultSubobject<UArrowComponent>(TEXT("Arrow"));
if (ArrowComponent)
{
// ...
}
// CharacterMovement
CharacterMovement = CreateDefaultSubobject<UCharacterMovementComponent>(ACharacter::CharacterMovementComponentName);
if (CharacterMovement)
{
CharacterMovement->UpdatedComponent = CapsuleComponent;
}
// SkeletalMesh
Mesh = CreateOptionalDefaultSubobject<USkeletalMeshComponent>(ACharacter::MeshComponentName);
if (Mesh)
{
// ...
}
// GravityDirection
ReplicatedGravityDirection = UCharacterMovementComponent::DefaultGravityDirection;
}
'Unreal Engine > 개념정리' 카테고리의 다른 글
[UE5] SpawnActorDeferred (지연된 스폰) (0) | 2025.02.03 |
---|---|
[UE5] - 게임 플레이 프레임워크 (GameMode / GameState / PlayerController / PlayerState) + GameInstance (0) | 2025.01.31 |
[UE5] - CDO(Class Default Object), 오브젝트 생성 (0) | 2025.01.15 |
Unreal Engine - 델리게이트 Delegate (1) | 2024.12.30 |
언리얼 컨테이너 라이브러리 (TMap, TSet) (0) | 2024.12.20 |