공부하며 적는 내용이기 때문에 정확하지 않을 수 있다.
언리얼은 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 |