공부하며 적는 내용이기 때문에 정확하지 않을 수 있다.

 

 

언리얼은 Actor -> Pawn -> Character의 상속 구조를 가지고 있다.

Actor부터 월드에 배치될 수 있고 Pawn부터 제어가 가능해진다.

Actor를 상속받고 확장해서 제어할 수 있게 된것이 Pawn이라고 보면 될 것이다.

 

폰의 이동은 MovementComponent, 제어는 Controller에 의해 이뤄진다.

컨트롤러가 폰에 빙의해서 제어하는 방식이다.

플레이어가 폰을 제어할 때 PlayerController를 사용하고 AI가 폰을 제어할 때는 AIController를 사용하면 된다.

Controller는 따로 설정하지 않으면 게임모드에 의해 기본 컨트롤러(PlayerController)가 설정된다.

MovementComponent는 따로 추가해주지 않으면 컴포넌트가 붙지 않는다.

Pawn에서 MovementComponent를 반환받을 수 있는 GetMovementComponent가 구현되어 있지만 해당 컴포넌트를 폰에서 관리하고 있지 않기 때문에 AddMovementInput등의 기능이 작동하지 않는다.

 

만약 MovementComponent를 붙여준다면 MovementComponent::UpdatedComponent = RootComponent 를 반드시 추가해서 RootComponent에 접근할 수 있게 해야한다.

 

 

Character는 Pawn을 확장한것인데 조금 더 복잡한 행동이나 애니메이션을 처리하는것이 추가되었다.

CharacterMovementComponent가 기본적으로 포함되어있다.

 

// Character 코드 일부

TObjectPtr<UCharacterMovementComponent> CharacterMovement;

Character::Character()
{
    CharacterMovement = CreateDefaultSubobject<UCharacterMovementComponent>(ACharacter::CharacterMovementComponentName);
    if (CharacterMovement)
    {
        CharacterMovement->UpdatedComponent = CapsuleComponent;
    }
}

 

Pawn에는 없는 내용이 Character에는 기본적으로 포함이 되어 있는 것을 확인할 수 있다.

위에서 언급한대로 CharacterMovement가 CapsuleComponent(=RootComponent)를 관리하도록 설정한다.

 

걷기 최대속도, 가속도, 점프 등 이동에 관련된 다양한 내용과 애니메이션에 관한 내용들이 추가로 구현이 되어있다.

추가로 액터와 폰에는 기본적으로 메시가 존재하지 않지만 캐릭터는 스켈레탈 메시가 붙어있다.

'언리얼 엔진 > 정보' 카테고리의 다른 글

FTimerDelegate에 관련된 내용  (0) 2022.10.11
ApplyDamage, TakeDamage  (0) 2022.10.11
[UE5] 포스트 프로세싱  (0) 2022.10.01
[UE5] 루멘  (0) 2022.09.29
언리얼 베테랑의 100가지 팁과 트릭 정리  (0) 2022.09.29

+ Recent posts