이 문서에서는 무버 플러그인을 더 잘 이해할 수 있도록 무버의 기능과 개괄적인 콘셉트를 다룹니다.
MoverComponent
MoverComponent 는 무브먼트를 관리하는 액터 컴포넌트로, 상태 쿼리의 소스 역할을 하며 무브먼트에 영향을 미치는 API를 제공합니다.
무브먼트 모드
무브먼트 모드 는 걷기, 낙하, 기어오르기 등 액터가 이동하는 방식을 결정하는 입력을 관찰하는 오브젝트입니다. 모드는 무브먼트 방법을 결정한 후 캐릭터를 움직이려고 시도합니다.
한 번에 하나의 모드만 활성 상태일 수 있습니다.
레이어드 이동
레이어드 이동(Layered Move) 는 추가적이고 종종 임시적인 무브먼트를 나타내는 오브젝트입니다. 예를 들어 액터를 밀어내는 지속적인 힘, 적을 향해 움직이는 유도형 힘, 애니메이션 기반 루트 모션 등이 있습니다.
레이어드 이동은 제안된 이동을 생성하고 활성 무브먼트 모드에 의존하여 이를 실행합니다. 여러 레이어드 이동이 동시에 활성 상태가 될 수 있으며, 다른 인플루언스와 혼합됩니다. 레이어드 이동의 수명은 일정 기간 또는 순간이며, 무브먼트 모드가 변경되어도 유지됩니다.
트랜지션
트랜지션(Transition) 은 현재 상태를 기반으로 액터가 모드를 변경해야 하는지 평가하는 오브젝트입니다. 특정 모드와 연결되어 모드가 활성 상태인 경우에만 평가되거나 모드와 관계없이 글로벌로 평가될 수 있습니다.
트랜지션을 사용하는 것은 선택 사항이며, 다른 모드 전환 메서드를 사용할 수 있습니다.
디폴트 캐릭터 무브먼트 세트
디폴트 캐릭터 무브먼트 세트(Default Character Movement Set) 는 캐릭터 무브먼트 컴포넌트(Character Movement Component, CMC) 에 내장된 기능과 유사하게 작동하도록 개발된 모드 및 메커니즘의 컬렉션입니다. 모든 액터에서 수직 캡슐 프리미티브를 추정하는 등 몇 가지 제한을 공통적으로 갖습니다.
디폴트 캐릭터 무브먼트 세트는 CMC를 사용하는 데 익숙한 개발자들이 원활하게 전환할 수 있도록 지원하기 위해 무버 플러그인에 포함되어 있습니다.
이 무브먼트 세트에 대해 소개된 방법은 무브먼트를 디자인하는 데 사용할 수 있는 접근법 중 하나일 뿐입니다. 이 접근법이 프로젝트에 적합한 경우 이를 통해 모두를 대체할 수 있습니다. 다른 접근법은 단일 타입에서 파생된 여러 특수화된 모드와 연관되지만 매우 다양하게 환경설정할 수 있습니다.
기타 무브먼트 인플루언스와
무브먼트 모디파이어
웅크리기, 자세 변경 등의 이벤트에서 무브먼트 모디파이어를 사용하여 무브먼트를 생성하지 않고도 무브먼트 시뮬레이션의 파라미터를 조정할 수 있습니다. 이를 사용하여 웅크리기의 최대 속도 및 가속 등 무브먼트 세팅을 일괄적으로 변경할 수 있습니다.
인스턴트 이펙트
인스턴트 이펙트는 순간이동, 강제 속도 유발과 같은 변경사항을 실행하는 데 시간을 소요하거나 모드에 의존하지 않고도 무브먼트 시뮬레이션 상태를 즉시 변경해주는 특정 메커니즘을 처리합니다.
내비게이션 및 경로 찾기
무버는 디폴트 무브먼트 세트의 NavMoverComponent 및 NavWalking 무브먼트 모드를 통해 내비게이션을 지원합니다. NavMoverComponent는 무버 컴포넌트와 더불어 액터에 추가됩니다.
역수 속도 오브젝트(Reciprocal Velocity Obstacles, RVO) 회피는 아직 지원되지 않습니다.
구성 가능한 입력 및 상태
입력(Input) 은 제어하는 오너와 인플루언스 무브먼트 시뮬레이션 스텝에 의해 생성됩니다. 여기에는 원하는 이동 방향, 점프 입력, 원하는 경로 정보 등이 포함됩니다.
동기화 상태(Sync State) 는 특정 시점의 액터 무브먼트를 설명하는 스냅샷입니다. 여기에는 위치, 방향, 속도, 무브먼트 모드 등이 포함됩니다.
입력 및 동기화 상태는 모두 동적으로 어태치된 프로젝트별 구조체 데이터를 갖습니다. 예를 들어 런타임에서 플레이어에게 부여된 아이템은 새 무브먼트 모드를 작동시키거나 추가 상태 데이터를 작성하는 데이터를 활성화할 수 있습니다.
공유 세팅
분리된 여러 무브먼트 모드 간에 세팅 을 공유할 수 있습니다. 예를 들어 걸을 수 있는 최대 경사 각도는 걷기 및 낙하 모드에 모두 영향을 미칠 수 있습니다. 개별 모드는 어떤 세팅 타입을 필요로 하는지 선언하며, MoverComponent는 두 모드 모두 해당 타입의 단일 인스턴스를 사용하게 합니다.
백엔드
네트워크 예측 외에도 여러 시스템을 사용하여 무버 액터를 제어할 수 있습니다. 예를 들어 피직스 기반 캐릭터는 카오스 네트워킹된 피직스 시스템과 인터페이싱하는 다른 백엔드를 사용할 수 있습니다. 네트워킹되지 않은 게임을 위해 단순한 독립형 백엔드를 생성하여 다른 시스템의 오버헤드를 방지할 수도 있습니다.
모드 구현은 제안된 무브먼트를 다르게 실행할 수 있도록 특수하게 처리할 수도 있습니다. 예를 들어 피직스 기반 무브먼트 모드는 구성 작업만 수행하면서 실제 무브먼트는 피직스 시뮬레이션이 담당하도록 할 수도 있습니다. 이는 씬 컴포넌트를 직접 움직이는 디폴트 모드와 다릅니다.