본문 바로가기
IT/언리얼_포트폴리오

3일차. GAS 기반 애니메이션 레이어 구조 설계

by 웃는펭귄 2026. 2. 15.

📌 작업 목적

  • 애니메이션을 입력 기반이 아니라 Ability 기반으로 구동
  • 캐릭터 상태를 GAS가 소유하고, AnimInstance는 그것을 “표현”만 하도록 구조화
  • 무기/스킬 확장에 대응 가능한 애니메이션 구조 설계

1️⃣ 설계 핵심 개념

❗ 애니메이션의 주도권을 GAS가 가진다

기존 방식:

입력 → AnimInstance → 상태 변경

 

GAS 기반:

 
입력 → Ability 활성화 → GameplayTag 부여 → AnimInstance 반응

즉,

  • 애니메이션은 Ability의 결과
  • AnimInstance는 태그를 읽어 상태를 갱신하는 구조

2️⃣ 상태 전달 방식

✔ GameplayTag 기반 상태 관리

Ability가 실행되면:

  • 공격 Ability → State.Attack
  • 조준 Ability → State.Aim
  • 재장전 Ability → State.Reload

AnimInstance는 매 프레임 ASC에서 활성 태그를 조회하여:

  • Bool 값 세팅
  • Layer Weight 조절
  • Montage 재생 여부 결정

3️⃣ 공격 애니메이션 처리 방식

✔ 공격은 Ability 내부에서 Montage 실행

AbilityTask_PlayMontageAndWait

 

핵심 포인트:

  • AnimInstance에서 공격을 직접 호출하지 않음
  • Ability가 Montage를 실행
  • Montage 종료 → Ability 종료

애니메이션과 로직이 완전히 동기화됨


4️⃣ 기본 이동 애니메이션 구조

이동은 Ability가 아님
→ MovementComponent 기반

AnimInstance에서는:

  • Speed 계산
  • Falling 여부 확인

이건 GAS와 분리

즉,

  • 이동 = 캐릭터 상태 기반
  • 공격/조준/재장전 = Ability 기반

5️⃣ 레이어 설계 (무기 대응)

핵심 설계:

  • Base Layer → 기본 이동
  • UpperBody Layer → Ability 기반 애니메이션
  • Slot → Ability Montage 전용

무기 교체 시:

  • GameplayTag 변경
  • AnimInstance에서 무기 타입 확인
  • 해당 Layer 활성화

애니메이션을 무기별로 교체하지 않고
Layer로 분리해서 처리


6️⃣ 오늘 설계의 핵심 정리

  • 애니메이션 상태는 GAS가 결정
  • Ability가 Montage를 실행
  • GameplayTag가 상태를 전달
  • AnimInstance는 태그를 읽고 표현만 담당
  • 무기 대응은 Layer 기반으로 해결