- 개요
플레이어의 입력에 따라 캐릭터의 애니메이션을 연출한다
이때, 입력 시스템과 동일하게 Lyra의 애니메이션 구조를 바탕으로 애니메이션 시스템을 구성한다
Animation Blueprint의 원형이 되는 AnimInstance 클래스를 생성하고
해당 클래스의 내부에서 Actor나 UObject와 관련된 로직은 게임 스레드에서만 수행하고
애니메이션을 갱신하는데 필요한 수학이나 멤버변수 로직은 멀티 스레드에서 계산하여
수많은 플레이어의 애니메이션 연산을 분산하여 처리한다
- 스크립트 작업
1) SOO_Character 클래스

기본 캐릭터 클래스의 생성자에 위와 같이 로직을 추가한다
캐릭터의 캡슐 컴포넌트 + 스켈레탈 메쉬와 카메라와의 충돌을 무시하도록 설정한다
따라서 카메라의 갑작스러운 줌인 현상을 차단한다
2) SOO_ActionComponent 클래스

SOO_ActionComponent 클래스에 위와 같이 2개의 함수를 추가한다
GAS 프레임워크의 ASC의 역할을 대신하여 애니메이션을 재생하기 위해 필요한 Tag와 Tag의 보유 여부를 확인한다
3) SOO_AnimInstance 클래스

프로젝트에서 사용할 Animation Blueprint의 클래스를 생성한다
멤버변수는 위와 같다
- Speed 멤버변수 : 캐릭터의 속도
- Direction 멤버변수 : 캐릭터의 이동방향
- GroundSpeed 멤버변수 : 지면에서의 캐릭터의 속도
- Velocity 멤버변수 : 캐릭터의 속도벡터
- GroundVelocity 멤버변수 : 지면에서의 캐릭터의 속도벡터
- bIsMoving 멤버변수 : 캐릭터가 이동하고 있는지 여부
- bIsFalling 멤버변수 : 캐릭터가 떨어지고 있는지 여부
- CachedCharacter 멤버변수 : 해당 AnimInstance를 들고 있는 캐릭터
- CachedMovementComponent 멤버변수 : 해당 캐릭터의 MovementComponent
- CachedVelocity 멤버변수 : 캐싱된 캐릭터의 속도벡터
- CachedActorRotation 멤버변수 : 캐싱된 캐릭터의 회전값
- bCachedIsFalling 멤버변수 : 캐싱된 캐릭터의 떨어지고 있는지 여부

NativeInitializeAnimation 함수의 로직을 위와 같이 구성한다
AnimInstance를 사용하는 캐릭터와 캐릭터의 컴포넌트를 캐싱한다

NativeUpdateAnimation 함수를 위와 같이 구성한다
해당 함수는 게임 스레드를 사용하여 동작하며 Actor나 UObject와 관련된 로직을 수행한다
캐릭터와 캐릭터의 컴포넌트에 접근하여 캐싱 멤버변수들의 값을 설정한다

NativeThreadSafeUpdateAnimation 함수를 위와 같이 구성한다
해당 함수는 멀티 스레드를 사용하여 동작하며 애니메이션 블루프린트의 멤버변수나 수학과 관련된 로직을 수행한다
게임 스레드에서 캐싱된 값을 사용하여 애니메이션의 연출에 필요한 변수를 갱신한다
- 블루프린트 작업
1) Project Settings 설정

상단의 Editor - Project Settings - Engine에서 옵션을 활성화하여 애니메이션에 대한 멀티 스레드 사용을 허용한다
2) ABP_CharacterAnimInstance 블루프린트

캐릭터에서 사용할 AnimInstance의 Anim Graph를 위와 같이 구성한다
2개의 StateMachine을 생성하여 Locomotion에서는 이동하고 멈추는 애니메이션 포즈를 제공하고
Main States에서는 다른 State Machine에서 제공되는 포즈를 출력하도록 구성하였다
2 - 1) Locomotion 스테이트 머신

Locomotion 스테이트 머신의 로직을 위와 같이 구성한다
가만히 서 있는 Idle 포즈와 걷는 Walk/Run 포즈로 구성하였고 bIsMoving 변수의 값에 따라 각각의 포즈를 재생한다
2 - 2) Main States 스테이트 머신

Main States 스테이트 머신의 로직을 위와 같이 구성한다
2개의 State Alias를 사용하여 애니메이션끼리 간단하게 연결한다
- To Falling 앨리아스 : Landing 포즈와 Locomotion 포즈에서 전환이 발생
- bIsFalling 변수가 True인 경우에 Fall Loop 포즈 재생
- bIsFalling 변수가 True면서 Velocity의 Z 값이 100 이상이면 Jump 포즈 재생
- Jump 포즈에서 Fall Loop 포즈의 전환은 Automatic Rule Based 옵션 적용
- To Landing 앨리아스 : Fall Loop 포즈와 Jump 포즈에서 전환이 발생
- bIsFalling 변수가 False인 경우에 Landing 포즈 재생
- bIsMoving 변수가 True + Automatic Rule Based 옵션을 적용하여 Landing에서 Locomotion으로 포즈 전환
3) BP_Player 블루프린트

플레이어 캐릭터에서 사용할 Anim Class 변수의 값을 위와 같이 설정한다
- 최종 실행 결과

'언리얼 엔진 - 게임 프로젝트 > 리슨 서버 기반 배틀 로얄' 카테고리의 다른 글
| 프로젝트 세팅 - 7) Lyra 기반의 애니메이션 설정 (3) (0) | 2026.09.20 |
|---|---|
| 프로젝트 세팅 - 6) Lyra 기반의 애니메이션 설정 (2) (0) | 2026.09.19 |
| 프로젝트 세팅 - 4) 플레이어의 움직임 설계 (0) | 2026.09.17 |
| 프로젝트 세팅 - 3) Lyra 기반의 입력 시스템 구성 (2) (0) | 2026.09.13 |
| 프로젝트 세팅 - 2) Lyra 기반의 입력 시스템 구성 (1) (0) | 2026.09.13 |