
BT와 EQS를 통해서 적의 이동, 공격 알고리즘을 만들었으니 이제 알고리즘이 작동할 때 보이는 모습, 즉 애니메이션을 적용해야 한다.

Handle Sensed Sight를 호출하고, Handle Sensed Sight는 Set State as Attacking를 호출하며 AttackTarget으로 플레이어를 전달한다.
Attacking 상태에서 가장 우선순위가 높은(제일 왼쪽에 있는) 행동이 무기를 장착하는 행동이다.IsWieldingSword는 말그대로 무기를 착용하고 있는 지를 판단하는 데코레이터. 적 캐릭터의 IsWieldingWeapon 변수 값을 반환한다. 데코레이터 속성이 inverted이므로 이 값이 false일 때만 이하의 노드를 실행한다.

EquipWeapon()을 호출하고, 이벤트 디스패처(델리게이트)를 통해 무기 장착 완료시 호출되는 이벤트에 바인딩한다.
On Completed)되면 무기 장착 완료 이벤트를 호출한다.무기 장착 완료 이벤트가 호출되었다 = 캐릭터가 무기를 장착했다 이므로 Finish Execute 노드를 연결해 태스크가 끝났음을 알려준다. (Success에 체크를 잊으면 안된다.)Animation Montage와 Play Montage
- 몽타주는 캐릭터의 애니메이션을 담고 있다. 이 점에선 애니메이션 시퀀스와 크게 차이가 없어보이는데.. 서로 용도 차이가 꽤 있는 편.
구분 애니메이션 시퀀스 (Animation Sequence) 애니메이션 몽타주 (Animation Montage) 목적 단순 애니메이션 재생 및 반복 동작 정의 여러 애니메이션 결합, 블렌딩 및 복잡한 흐름 제어 사용 방식 하나의 애니메이션 클립을 순차적으로 재생 여러 애니메이션 시퀀스를 조합하여 이벤트 기반으로 재생 특징 - 특정 동작(걷기, 뛰기 등)에 사용
- 루프 가능
- 단순 구조로 사용 용이- 조건부 재생 가능
- 블렌드 슬롯 활용 가능
- 노티파이(Notify) 추가 가능주요 장점 - 단순하고 가볍다
- 기본적인 캐릭터 동작 표현에 적합- 복잡한 애니메이션 상태 처리 가능
- 여러 애니메이션 전환 및 이벤트 기반 조작단점 - 단일 동작만 가능
- 복잡한 애니메이션 로직 구현에 부적합- 구성 및 유지보수 어렵고, 너무 복잡해질 수 있음
- 성능 오버헤드 우려상황별 추천 - 루프 애니메이션 (아이들 상태, 기본 이동 등)
- 단일 모션 작업- 복합 동작 (공격 중 무기 휘두르기 등)
- 여러 동작 결합 및 분기가 필요한 경우성능 가벼움, 성능 부담 적음 성능 오버헤드 가능성 있음 (복잡성에 비례) 사용 사례 - 캐릭터 기본 상태 (걷기, 뛰기, 멈춤 등)
- 루프 동작- 이벤트 기반 동작(타격, 특정 행동 등)
- 복합적인 행동 연결 (콤보)
- 요약하자면 단순하고 가벼운 개별 동작은 애니메이션 시퀀스와 블렌드 스페이스가 좋고, 복잡한 행동 조합이나 이벤트 기반 애니메이션은 몽타주가 좋다.
Animation Montage 알아보기
- 몽타주 파일을 열면 아래와 같은 화면이 나오는데 중요한 건 뷰포트 아래 부분.
DefaultGroup.DefaultSlot- 슬롯을 지정하여 슬롯 별로 다른 애니메이션이 재생되도록 할 수 있다. 대표적으로 상하체의 애니메이션 재생을 분리하여 피격모션을 취해도 다리는 계속 움직이는 것이 있다.
Notifies- 몽타주 재생 중 특정 프레임에서 알림이 발생하도록 하는 것. 이를 이용해 특정 시점에 이펙트·사운드를 재생하거나, 스켈레탈 메시의 소켓에 무기를 부착할 수 있다. 사진에서는 대략 18프레임에ShowSword노티가 발생한다.
Curves- IK Rig 의 수치등을 조작할 수 있다. 위 사진에서는 몽타주가 재생중일 때는 LegIK가 작동하지 않도록 하였다.
Play Montage
EquipWeapon()이 호출되면 위와 같은 과정이 순서대로 재생된다. 몽타주 재생, 칼 스폰 후 부착,IsWieldingWeapon참으로 설정..- 여기서 봐야할 부분은 앞 부분이다.
On Completed에서 이벤트 호출과 별개로 다른 출력핀을 보아야 한다.On Interrupted를 통해 몽타주 재생중 강제로 다른 행동을 취하게 되었을 때의 상황도 설정할 수 있다.On Notify Begin->Switch on Name으로 해당하는 몽타주의 노티파이를 불러올 수 있다. 위에서 설정한ShowSword노티파이가 실행되면SpawnActor로 무기(칼)를 스폰한다.- 이렇듯 노티파이를 통해 애니메이션의 특정 시점에 함수를 호출할 수 있다.

Play Montage를 실행한다. 애니메이션에서 무기가 플레이어와 닿을 것 같은 프레임에 노티파이를 만들어주고, On Notify Begin에서부터 노드를 만들어주면 된다.Play Sound at Location으로 공격시 소리를, Sphere Trace for Objects로 피격 판정 검사를, Apply Damage로 피격 성공시 대미지를 적용한다.
- 위 GIF를 보면 공격에 맞은 적이 피격 모션을 취하면서 그대로 미끄러져 다가오는 것을 볼 수 있다. 어색하지 않은가?
- 이를 위해 상체와 하체의 애니메이션을 분리할 필요가 있다. 분리 기준은 스켈레탈 메시의 bone이다.
- 몽타주를 이용한 상하체 분리 재생엔 크게 3가지 작업이 필요하다.

spine_02으로 정했다. 01는 너무 낮고 03는 너무 높다.
Animgraph에서, 최종 포즈인 Output Pose의 전에 아래와 같이 설정해준다

spine_02로 지정한다. (사진에선 03이지만 넘어가자..)
Slot 'DefaultSlot'을 생성한다.UpperBody로 슬롯을 바꿔준다.Main State를 베이스 포즈로 하고, 상체만 로코모션을 재생할 수 있게 된다.
DefaultGroup.UpperBody로 설정해준다.
이제 피격 모션을 취하면서도 발놀림을 멈추지 않게 되었다.