I. 애니메이션 에셋(Animation Asset)
1) 애니메이션 블루프린트(ABP)
- 스켈레탈 메시의 애니메이션을 제어하는 블루프린트
- 캐릭터의 상태에 따라 어떤 애니메이션을 재생할지 결정
- 상태 머신(State Machine)을 사용하여 애니메이션 전환 가능
- 이벤트 그래프(Event Graph)를 사용하여 속도, 점프 여부 등의 값을 계산
예시
캐릭터 속도 = 0
↓
Idle 애니메이션
캐릭터 속도 > 0
↓
Walk / Run 애니메이션
점프
↓
Jump 애니메이션
동작 흐름
캐릭터 상태
(속도, 방향, 점프 여부 등)
↓
Animation Blueprint
↓
애니메이션 선택
↓
Skeletal Mesh 재생
2) 애니메이션 블루프린트(ABP)의 그래프
① AnimGraph
- 최종적으로 캐릭터에 적용될 애니메이션(포즈)을 결정하는 그래프
- State Machine, Blend Space 등을 사용하여 애니메이션을 연결
- 현재 캐릭터 상태에 맞는 애니메이션을 선택하고 자연스럽게 전환
- 에셋 브라우저에서 애니메이션 에셋을 드래그&드롭해서 새 노드 생성 가능

역할
애니메이션 변수
(Speed, IsInAir 등)
↓
Anim Graph
↓
최종 포즈 생성
↓
캐릭터 메시에 적용
② EventGraph
- 캐릭터의 상태 정보를 수집하여 애니메이션 변수 업데이트
- 일반 블루프린트의 Event Graph와 동일한 방식으로 작성

역할
캐릭터 상태 수집
↓
애니메이션 변수 갱신
↓
Anim Graph에 전달
③ AnimGraph와 EventGraph의 관계
Character
↓
속도, 점프 여부 등 상태 정보
↓
Event Graph
↓
Speed, IsInAir 변수 업데이트
↓
Anim Graph
↓
애니메이션 선택
↓
최종 포즈 생성
3) 애니메이션 에셋의 종류
① 애니메이션 시퀀스 (Animation Sequence)
- 걷기, 뛰기, 점프, 공격 등 하나의 동작이 저장된 애니메이션 파일
- 가장 기본이 되는 애니메이션 에셋
- Animation Blueprint, Blend Space, Montage 등에서 재사용 가능
예시
Idle
Walk
Run
Jump
② 애니메이션 몽타주 (Animation Montage)
- 여러 애니메이션 시퀀스를 하나로 묶어 재생할 수 있는 에셋
- 특정 이벤트 발생 시 재생되는 일회성 동작에 주로 사용
- 재생 구간(Section)을 나누어 제어 가능
예시
버튼 입력
↓
Montage 재생
↓
특정 공격 애니메이션 실행
③ 블렌드 스페이스 (Blend Space)
- 여러 애니메이션 시퀀스를 입력값에 따라 자연스럽게 섞어주는 에셋
- 주로 이동 애니메이션 구현에 사용
예시
Speed = 0
↓
Idle
Speed = 300
↓
Walk
Speed = 600
↓
Run
한 눈에 정리
Animation Sequence(개별 동작)
│
├─ Blend Space
│ └─ 이동 애니메이션
│
└─ Animation Montage
└─ 공격, 스킬 등 이벤트 애니메이션
4) 애니메이션 적용
① 애니메이션 블루프린트(ABP) 생성
콘텐츠 브라우저 → 우클릭 → 애니메이션 → 애니메이션 블루프린트
- 캐릭터의 애니메이션을 제어할 Animation Blueprint 생성

② 스켈레톤 생성
스켈레톤 선택 → 이름 결정
- Animation Blueprint는 특정 스켈레톤을 기준으로 동작
- 같은 스켈레톤을 사용하는 메시만 해당 Animation Blueprint를 사용할 수 있음

③ 애니메이션 시퀀스 추가
에셋 브라우저에서 애니메이션 시퀀스를 하나 선택 → AnimGraph로 드래그

④ Output Pose 연결
선택한 노드를 Output Pose에 연결
- Output Pose는 캐릭터에 최종적으로 적용될 애니메이션 결과
- 현재는 Idle 애니메이션만 연결되어 있으므로 항상 대기 상태 유지

⑤ 캐릭터에 Animation Blueprint 적용
적용할 캐릭터의 블루프린트 → 디테일 → 애님 클래스 설정
- 지금 다루고 있는 애니메이션 블루프린트를 선택
- 캐릭터 메시가 ABP_Chara의 애니메이션 로직을 사용하도록 지정

⑥ 애니메이션 적용 완료
플레이 실행
BP_Character
↓
ABP_Character
↓
A_Bot_Idle
↓
캐릭터 대기 애니메이션 재생


II. 블렌드 스페이스
가만히 있기와 뛰기 합성 (Idle & Run)
① 블렌드 스페이스 생성
콘텐츠 브라우저에 Anim 폴더 생성 → 우클릭 → 애니메이션 → 블렌드 스페이스

② 스켈레톤 선택
스켈레톤 선택 → 이름 결정

③ 축(Axis) 설정
- 블렌드 스페이스는 기본적으로 X축, Y축을 사용
- 이번에는 Y축만 사용함

④ Axis Settings 설정
- 세로축(Y축) 설정
이름 : Speed
최소 축 값 : 0
최대 축 값 : 500(최대 이동 속도)
- 캐릭터 속도를 기준으로 애니메이션을 선택하기 위함
- 가로 축을 사용하지 않을 것이라서 가로 축의 그리드 분할을 2로 설정

⑤ 애니메이션 배치
Speed = 0
↓
A_Bot_Idle
Speed = Max
↓
A_Bot_Run
배치

- Ctrl + 드래그로 프리뷰 포인트(초록색 x)를 움직여서 프리뷰 확인 가능
- Shift + 드래그를 통해 애니메이션 정렬 가능
결과
Speed 증가
↓
Idle
↓
Idle + Run 혼합
↓
Run

III. 스테이트 머신(State Machine)
1) 스테이트 머신이란?
- 여러 상태(State)와 상태 간 전환(Transition)을 관리하는 시스템
- 특정 조건이나 이벤트에 따라 상태가 변경됨
- 애니메이션의 흐름을 체계적으로 관리할 수 있음
예시)
신호등
빨간불
↓
초록불
↓
노란불
↓
빨간불
캐릭터 애니메이션
Idle
↓
Run
↓
Jump
↓
Fall
↓
Land
↓
Idle
2) Speed 변수 수집
① ABP에 Speed 변수 생성
- 현재 캐릭터의 이동 속도를 저장하기 위한 변수
- Event Graph에서 계산된 속도 값을 저장

② Event Graph에서 Speed 값 계산
- Event Blueprint Update Animation은 매 프레임마다 실행됨
- 현재 캐릭터(Pawn)의 Velocity(속도)를 가져옴
- Z축(점프 높이)은 제외하고 X, Y축만 사용
- Velocity 벡터의 길이(Vector Length)를 계산하여 Speed 변수에 저장

③ Anim Graph에서 Blend Space와 연결
- Speed 변수를 Blend Space의 Speed 입력값에 연결
- 캐릭터의 이동 속도에 따라 Idle과 Run 애니메이션이 자연스럽게 전환됨

④ 결과
- 캐릭터가 정지하면 Idle 애니메이션 재생
- 캐릭터가 이동하면 Speed 값이 증가
- Speed 값에 따라 Run 애니메이션으로 자연스럽게 전환

3) State Machine 적용
- 캐릭터는 Idle, Run, Jump 등 여러 애니메이션 상태를 가짐
- 상태마다 애니메이션을 직접 연결하면 관리가 어려움
- State Machine을 사용하면 상태와 상태 전환 조건을 체계적으로 관리할 수 있음
① State Machine 생성
- Anim Graph에서 State Machine 생성

② Idle, Run State 생성
우클릭 → 스테이트 추가
- State Machine 내부에 Idle, Run 두 개의 State 생성

③ 각 State에 애니메이션 연결
Idle State
- Idle 애니메이션 시퀀스 연결

Run State
- RunWalk 블렌드 스페이스 연결
- Speed 변수를 입력값으로 사용

④ State 연결
- Entry를 Idle에 연결
- Idle ↔ Run이 서로 이동할 수 있도록 연결

⑤ Transition Rule 설정
- State 사이의 화살표를 더블 클릭하여 전환 조건 설정
Idle → Run(규칙)
- Speed가 0보다 크면 Run 상태로 전환

Run → Idle(규칙)
- Speed가 0 이하이면 Idle 상태로 전환

⑥ Anim Graph에 연결
- 생성한 State Machine을 Output Pose에 연결

⑦ 상태 전환 흐름
캐릭터 이동 안 함
↓
Speed = 0
↓
Idle
캐릭터 이동
↓
Speed > 0
↓
Run
캐릭터 정지
↓
Speed <= 0
↓
Idle
4) 점프 상태값 수집
- 점프 애니메이션을 재생하기 위해서는 현재 캐릭터가 공중에 있는지 여부를 알아야 함
- Character Movement Component가 제공하는 IsFalling 값을 이용하여 공중 상태를 확인할 수 있음
① IsFalling 값 가져오기
- Is Falling은 캐릭터가 공중에 있으면 True, 땅에 있으면 False를 반환

② IsInAir 변수 생성
- Bool 타입 변수 IsInAir 생성
- Is Falling의 반환값을 저장


- 이후 State Machine의 점프 상태 전환 조건으로 사용
③ Sequence 노드 추가
- Event Blueprint Update Animation에서 여러 작업을 동시에 수행하기 위해 Sequence 노드 사용
- Flow Control → Sequence 추가

④ 블루프린트 정리
- Try Get Pawn Owner와 같이 중복되는 노드는 하나로 합쳐 사용할 수 있음
- 기능은 동일하지만 그래프를 더 깔끔하게 관리 가능

Try Get Pawn Owner
├ Get Velocity → Speed 계산
└ Get Movement Component → IsInAir 계산
6) State Machine - Jump, Fall, Land State 적용
① Jump, Fall, Land State 생성
- State Machine 내부에 Jump, Fall, Land State 추가

- Idle/Run State Alias 생성
- Idle과 Run 상태를 하나의 그룹처럼 관리하기 위해 사용

② 각 State에 애니메이션 연결
Jump State
- Jump 애니메이션 시퀀스 연결

Fall State
- Fall 애니메이션 시퀀스 연결

- 애니메이션 시퀀스 옵션에서 애니메이션 루프 활성화
- 떨어지는 동안 계속 재생해야 하기 때문

Land State
- Land 애니메이션 시퀀스 연결

③ State 연결
- 새로 추가한 State Alias와 State들을 연결
- Land State와 Idle State를 연결

④ Transition Rule 설정
- State 사이의 화살표를 더블 클릭하여 전환 조건 설정
Idle/Run → Jump(규칙)과 Idle/Run →Fall(규칙)
- 캐릭터가 공중에 있으면 Jump 상태 또는 Fall 상태로 전환

Jump → Fall(규칙)
- 별도의 조건 없이 자동 전환
- Transition rule 디테일에서 스테이트의 시퀀스 플레이어에 따른 자동 규칙 활성화

Fall → Land(규칙)
- 공중 상태가 끝나면 착지 상태로 전환
수학 → 부울 → Not boolean 추가

Land → Idle(규칙)
- 별도의 조건 없이 자동 전환
- Transition rule 디테일에서 스테이트의 시퀀스 플레이어에 따른 자동 규칙 활성화

⑤ 결과



'언리얼 엔진 > 개념 정리' 카테고리의 다른 글
| 개념 정리 - 블루프린트(2) (0) | 2026.06.14 |
|---|---|
| 개념 정리 - 블루프린트(1) (0) | 2026.06.14 |
| 개념 정리 - 캐릭터 생성 및 이동 설정 (0) | 2026.06.13 |
| 개념 정리 - 액터(Actor) (1) | 2026.06.12 |
| 개념 정리 - Fab(마켓 플레이스) (0) | 2026.06.12 |