Table of Contents
이번 강의에서 다루는 게임 프레임웍 요소(주황)

새로운 캐릭터 제작
- 캐릭터 모델은 에픽 마켓플레이스의 무료에셋인 Infinity Blade:Warrios를 사용
- 애니메이션 에셋은 강의 자료에서 다운로드
- 애니메이션 컨트롤러
- 기존 캐릭터 블루프린트의 Mesh컴포넌트를 확인
- Animation카테고리의
Animation Mode : Use Animation Blueprint로 설정이 돼있다 - 그리고 아래
Anim Class속성에 들어가는 클래스의 블루프린트가 애니메이션 컨트롤을 담당한다 (현재 단계에서는 ABP_Quinn_C)
캐릭터 애니메이션 시스템 사전 준비
AnimInstance클래스를 상속받고 클래스를 새로 생성

컨텐츠 브라우저에서 Animation Blueprint에셋을 새로 생성하고 사용할 스켈레톤을 고르고, Parent Class는 새로 만든 클래스를 선택
ACharacter를 상속받는ABCharcterBase.cpp(이 프로젝트 기준)으로 가서 스켈레탈 메시의 에셋 레퍼런스를 원하는 모델의 스켈레탈 메시 에셋 레퍼런스로 교체AnimInstance도 마찬가지로 교체AABCharcterBase::AABCharcterBase() { ... static ConstructorHelpers::FObjectFinder<USkeletalMesh> CharacterMeshRef(TEXT("/Script/Engine.SkeletalMesh'/Game/InfinityBladeWarriors/Character/CompleteCharacters/SK_CharM_Cardboard.SK_CharM_Cardboard'")); if (CharacterMeshRef.Object) { GetMesh()->SetSkeletalMesh(CharacterMeshRef.Object); } static ConstructorHelpers::FClassFinder<UAnimInstance> AnimInstanceRef(TEXT("/Game/Animation/ABP_ABCharacter.ABP_ABCharacter_C")); if (AnimInstanceRef.Class) { GetMesh()->SetAnimInstanceClass(AnimInstanceRef.Class); } ... }생성자를 수정했기때문에 에디터를 끄고 빌드를 통해 에디터를 다시 실행
캐릭터가 바뀐것을 확인 but 지금은 T포즈

캐릭터 애니메이션 시스템의 생성
- 스켈레탈 메시 컴포넌트의 애니메이션 블루프린트 클래스를 지정한다. → ok
- 캐릭터가 초기화될 때 AnimInstance 클래스의 인스턴스를 생선한다. → ok
- 캐릭터는
GetAnimInstance()함수를 사용해 애니메이션 인스턴스를 얻을 수 있음 → ok - 애니메이션 인스턴스는
GetOwningActor()함수를 사용해 자신을 소유한 액터 정보를 얻을 수 있음
캐릭터 애니메이션 시스템의 설계
- 애니메이션 블루프린트는 이벤트 그래프와 애님 그래프의 두 영역으로 구성돼있음
- 이벤트 그래프에서는 이벤트로부터 상태를 파악할 수 있는 주요 변수를 저장하는데 사용
- 애님 그래프에서는 저장된 변수로부터 지정된 상태의 애니메이션을 재생
- 애님 그래프의 복잡한 상태는 Sate Alias로 분리해 효과적으로 설계할 수 있음

NativeInitializeAnimation()⇒ 애님 인스턴스가 처음 생성될 때 호출NativeUpdateAnimation(float DeltaSeconds)⇒ 프레임마다 호출
애님인스턴스 블루프린트 세팅 기억할 것만 기록
AnimInstance(를 상속받은) 클래스에서 선언한 변수들을 블루프린트에서 확인할려면 아래 사진의 Show Inherited Variables 옵션을 체크 해줘야한다.
스테이트머신 1개가 너무 더러워질것 같다면
- 스테이트 머신을 하나 더 만들고 최종 결과를
New Cached Save Pose블록으로 저장한 후 - 사용할 곳에서
Use cached Pose블록으로 저장한 애니메이션 결과를 불러와서 연결할 수 있다.
- 스테이트 머신을 하나 더 만들고 최종 결과를
유니티의 블렌드 트리 같은 기능은
컨텐츠 브라우져 우클릭 → Add → Animation → Legacy → Blend Space 1D로 사용한다
유니티와는 다르게 에셋으로서 생성하고 사용해야한다
- AnimGraph에서 드래그앤드롭으로 노드를 놓을 수 있다.

- AnimGraph에서 드래그앤드롭으로 노드를 놓을 수 있다.
'UE5 > 이득우의 언리얼 프로그래밍 공부 노트' 카테고리의 다른 글
| [Part2] 6.캐릭터 공격 판정 (1) | 2024.04.25 |
|---|---|
| [Part2] 5.캐릭터 콤보 액션 (0) | 2024.04.21 |
| [Part2] 3.캐릭터 컨트롤 설정 (0) | 2024.03.30 |
| [Part2] 2.캐릭터와 입력 시스템 (0) | 2024.03.28 |
| [Part2] 1.언리얼 엔진 게임 제작 기초 (1) | 2024.03.24 |