23. Lyra Animation 정리 - 1
어제 작성했던 Animation에 대해 정리해보려고 합니다.
Animation은 총 2가지 애니메이션이 존재하는데, 하나는 Weapon이고, 나머지 하나는 Mannequin입니다.
이번 포스팅에서는 Weapon에 대해서 정리해보겠습니다.
1. Weapon Animation
시작은 OnEquipped Event가 발생할 때입니다.
1-1. Determine Cosmetic Tags (Function)
- 우선 첫 번째로, GetPawn()->GetComponentByClass()를 통해 PawnComponent_CharacterParts를 가져옵니다.
- 만약 존재한다면 (IsValid) 지역변수 CosmeticComponent에 캐싱합니다.
- 그리고 CosmeticComponent에서 CombinedTags를 가져와서 CharacterParts의 멤버 변수에 저장합니다.
1-2. ActivateAnimLayerAndPlayPairedAnim (Macro)
- 이 로직은 C++에서 선언된 BlueprintCallable 함수와도 연관되어 있습니다.
- 맨 처음 Equipped bool flag가 세워지면,
TSubclassOf<UAnimInstance> UHmWeaponInstance::PickBestAnimLayer(bool bEquipped, const FGameplayTagContainer& CosmeticTags) const
{
const FHmAnimLayerSelectionSet& SetToQuery = (bEquipped ? EquippedAnimSet : UnequippedAnimSet);
return SetToQuery.SelectBestLayer(CosmeticTags);
}
- bool 값에 따라 장착된 AnimSet인지, 장작되지 않은 AnimSet인지를 판별합니다
- 그리고 그 AnimSet을 바탕으로 CosmeticTags로 필터링합니다.
- 그 후 GetTypedPawn을 통해 Character를 가져온 후, 캐릭터의 Skeletal Mesh를 가져와서 Anim Montage를 실행시킵니다.