[UE5] Actor, Pawn, Character

ChangJin·2024년 2월 29일
0

Unreal Engine5

목록 보기
25/114
post-thumbnail

https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Actors/
https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Actors/ActorLifecycle/
https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/Framework/Pawn/
https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/Framework/Pawn/Character/


플레이어나 적에 대한 Component

  • 게임에서는 플레이어, 적과 같은 오브젝트들은 공유하는 정보가 많이 있기 때문에 하나의 부모클래스에 공유하는 정보를 담아두고 각 오브젝트가 상속 부모클래스를 상속하는 방식으로 만듭니다
  • 그 중에서 크게 3개의 클래스가 있습니다. Actor, Pawn, Character 클래스입니다.
  • 클래스 선택 기준은 무엇인지, 어떤 게임에 적합한지 정리해보려고 합니다

Actor

정의

  • 액터란, 레벨에 배치할 수 있는 오브젝트
  • 이동, 회전, 스케일과 같은 3D 트랜폼을 지원하는 범용 클래스
  • C++ 또는 블루프린트로 생성(스폰) 및 소멸 가능
  • C++에서 AActor는 모든 액터의 Base Class
  • StaticMeshActor, CameraActor, PlayerStartActor 같은 엑터가 있습니다
  • 참고로 액터는 트랜스폼 (위치, 회전, 스케일) 데이터를 직접 저장하지 않으며, 액터의 루트 컴포넌트에 트랜스폼 데이터가 존재하는 경우, 그 데이터를 사용합니다

액터 생성

  • AActor 클래스 인스턴스를 새로 생성하는 것을 Spawn (스폰) 이라고 합니다
  • 범용 함수 SpawnActor() 혹은 특수 템플릿 버전을 사용하면 됩니다

컴포넌트

  • 액터 는 한 편으로 보면, Component (컴포넌트) 라 불리는 특수 유형 Object (오브젝트)를 담는 그릇으로 생각해 볼 수 있습니다
  • 여러가지 유형의 컴포넌트를 사용하여 액터 의 이동 및 렌더링 방식 등을 제어할 수 있습니다
  • 각 액터 에는 어느 컴포넌트가 액터 의 루트 역할을 할 것인지 나타내는 RootComponent 프로퍼티도 있습니다

  • Tick (틱)이란 언리얼 엔진에서의 액터 업데이트 방법을 일컫습니다
  • 모든 액터는 매 프레임, 또는 최소, 또는 사용자 정의 간격마다 틱을 하여 필요한 동작이나 계산을 업데이트할 수 있습니다
  • 액터 는 Tick() 함수. ActorComponent는 TickComponent() 함수를 사용해야 합니다

액터 소멸

  • 액터는 일반적으로 가비지 콜렉팅되지 않는데, 월드 오브젝트가 액터 레퍼런스 목록을 저장하기 때문입니다
  • 액터는 Destroy() 를 호출하여 명시적으로 소멸시킬 수 있습니다
  • 그러면 레벨에서 제거되어 pending kill (킬 대기) 상태로 마킹, 잠시 후 다음 가비지 컬렉션 때 지워집니다


Pawn

정의

  • 폰이란 월드 내 플레이어에 대한 물리적 표현입니다
  • Pawn 은 월드 내 플레이어나 AI 개체에 대한 물리적 표현입니다
  • 이는 플레이어나 AI 개체의 시각적인 모습 뿐만 아니라, 콜리전이나 기타 물리적 반응과 같은 측면에서 월드와의 상호작용 방식도 Pawn 이 규정한다는 뜻입니다

블루프린트에서

  • 블루프린트에서, 폰 파생 클래스에 동작을 추가하는 가장 좋은 방법은 SetActorLocation 입니다
  • 해당 위치로 순간이동시킬지, 아니면 sweep 시킬지를 결정할 수 있습니다
  • sweep 이란 폰을 해당 방향으로 이동시키다가 무언가에 걸리면 멈추게 하는 것을 말합니다

DefaultPawn

  • Pawn 클래스가 월드의 플레이어나 AI 개체의 물리적 표현을 만드는 데 있어 꼭 필요한 것만 제공해 주는 반면, DefaultPawn 서브클래스에는 추가적인 컴포넌트와 함수성이 딸려 옵니다



Character

정의

  • Character (캐릭터)는 걸어다닐 수 있는 능력을 지닌 특수 유형 Pawn 을 말합니다.
  • 이족보행을 하는 인간형 오브젝트에 매우 적합합니다
  • CharacterMovementComponent, CapsuleComponent,SkeletalMeshComponent 의 추가를 통해 Pawn 클래스는 고도로 특화된 Character (캐릭터) 클래스로 확장됩니다
  • 캐릭터는 월드에서 걷기, 달리기, 점프, 비행, 수영 등이 가능한 플레이어를 표현합니다
  • 이 클래스에는 기본적인 네트워킹이나 인풋 모델 구현도 추가되어 있습니다.

SkeletalMeshComponent

  • 폰과 달리 캐릭터에는 스켈레톤을 사용하는 고급 애니메이션을 위한 SkeletalMeshComponent 가 딸려옵니다
  • 다른 스켈레탈 메시를 Character 파생 클래스에 추가시키는 것도 가능하지만, 캐릭터에 관련된 주 스켈레탈 메시는 이것입니다.

CapsuleComponent

  • CapsuleComponent 는 운동 콜리전에 사용됩니다
  • CharacterMovementComponent 에 대한 복잡한 지오메트리 계산을 위해, Character 클래스의 콜리전 컴포넌트는 직립된 캡슐 모양이라는 가정을 합니다

CharacterMovementComponent

  • CharacterMovementComponent 는 아바타가 걷기, 달리기, 점프, 낙하, 수영 등으로 이동할 때 리지드 바디 피직스를 사용하지 않도록 할 수 있습니다
  • 캐릭터에 국한된 것으로, 다른 클래스에서 구현할 수 없습니다
profile
게임 프로그래머

0개의 댓글