티스토리 뷰

Ability Tasks

Ability Task는 Gameplay Ability가 특정 작업을 수행하기 위해 사용하는 일종의 일꾼이다.

Gameplay Ability가 직접 모든 작업을 처리하는 것이 아니라, 특정 작업을 Ability Task에 맡길 수 있다.

Ability Task는 다음고 ㅏ같은 작업들을 수행할 수 있다.

즉시 수행되는 작업
일정 시간 동안 진행되는 작업
특정 이벤트가 발생할 때까지 기다리는 작업
애니메이션 몽타주가 끝날 때까지 기다리는 작업
특정 조건이 충족될 때까지 기다리는 작업

 

GAS에는 이미 여러 종류의 Ability Task가 존재하며, 필요한 경우 직접 커스텀 Ability Task를 만드는 것도 가능하다.

하지만 먼저 Ability Task의 작동 방식을 이해하기 위해 기존에 제공되느 Task를 사용할 것이다.


 

가장 먼저 FireBolt 전용 애니메이션을 재생하기 위한 Play Montage 노드를 살펴볼 것이다.

 

일반적으로는 Animation Montage 카테고리에 위치한 Play Montage 노드를 사용한다.

해당 노드는 상황에 따라 실행되는 여러 출력 핀이 존재한다.

On Completed
- 몽타주 재생이 정상적으로 완료되었을 때 실행

On Blend Out
- 몽타주가 끝나기 위해 Blend Out을 시작하거나 관련 블렌딩 과정이 발생했을 때 실행
0 블렌드 설정에 따라 On Completed보다 먼저 호출될 수 있음

On Interrupted
- 몽타주 재생이 도중에 중단되었을 때 실행

On Notify Begin
- 몽타주 내부의 Montage Notify 또는 Montage Notify Window가 시작되었을 때 실행

On Notify End
- Montage Notify Window가 종료되었을 때 실행

 

이러한 Play Montage 노드는 Latent Node로, 몽타주 재생처럼 일정 시간이 걸리는 작업을 처리하는 동안에도 다른 로직의 실행을 막지 않으며, 이후 발생한 상황에 따라 각각의 출력 핀을 실행하는 비동기 방식으로 동작한다.

 

Gamepaly Ability에는 Montage와 관련된 기능들이 존재한다.

특정 Gameplay Ability는 현재 어떤 Montage가 재생되고 있는지 추적이 가능하다.

따라서 GAS의 Ability Task 버전인 PlayMontageAndWait 노드를 사용하여 Ability와 Montage의 상태를 연결하여 관리할 것이다.

 

PlayMontageAndWait 노드는 이름 그대로 다음 두 가지 작업을 수행한다.

1. Montage를 재생
2. Montage와 관련된 특정 상황이 발생할 때까지 기다림

 

 

기다릴 수 있는 대표적인 상황은 Montage 완료, Montage Blend Out, Montage 중단, Ability 취소 등이 있다.

또한 상단에 일반 출력 실행 핀이 존재하며, 이 핀은 Montage가 끝날 때까지 기다리지 않는다.

따라서 노드가 실행되어 Task가 시작되면 바로 다음 노드를 실행하는 것도 가능하다.

 

위 노드를 사용하기 위해선 기본적으로 Montage Asset이 있어야 한다.

Firebolt를 캐스팅하는 애니메이션을 찾고, 해당 애니메이션을 토대로 Montage를 생성하자.

 

생성된 montage는 기본적으로 Default Slot를 사용한다.

Montage가 정상적으로 재생되려면 Animatio Blueprint에서도 해당 Slot를 처리하고 있어야하기에, Aura 캐릭터의 Animaton Blueprint를 확인하여 AnimGraph에서 Default Slot 노드가 존재하는지 체크해주어야한다.


 

FireBolt Gameplay Ability로 돌아와서, Montage를 설정하고 일단 실행 핀에는 Print String을 연결하여 테스트해볼 것이다.

현재 상태로 적을 클릭하면 FireBolt Ability가 활성화되는 동시에 FireBolt Casting Montage가 재생되며 동시에 문자열도 바로 출력된다.

근데 캐릭터가 Casting Animation을 시작하자마자 발사체가 나가기에 시각적으로 자연스럽지 않은 문제가 있다.

 

다시 FirBolt Montage를 열어서, Blend 옵션들을 조절해주자.

Blend In 값이 초기값은 0.25 지만, 해당 시간이 길면 Casting Animation이 천천히 시작된다.

따라서 0으로 시작하여 별도의 블렌딩 과정 없이 즉각적으로 재생되도록 설정했다.

 

Montage가 종료될 때도 Blend Out을 적용할 수 있는데, Montage가 끝난 뒤 일정 시간 동안 자연스럽게 블렌딩되며 전환되는 효과를 가진다.

Blend In은 빠른 반응성을 위해 0으로 설정했지만, Blend Out은 동작이 마치고 자연스러운 전환을 위해 0.1로 설정하였다.

 

Ability Task의 장점은 Montage의 상태에 따라 나중에 다른 작업을 수행할 수도 있다는 것이다.

따라서 각 출력 핀에 Print String을 연결하여 어떤 핀이 출력되는지 테스트할 것이다.

 

정상적인 경우 다음 이벤트가 순서대로 발생한다.

1. Montage 재생
2. Blend Out 발생
3. On Blend Out 실행
4. Montage 정상 종료
5. On Completed 실행

호출 X
On Interrupted
On Cancelled

 

Montage가 끝나는 과정에서 먼저 Blend Out이 시작되기에, On Completed보다 On Blend Out의 문자열이 먼저 출력된다.


 

현재 FirBolit는 Ability가 활성화되자마자 FireBolt 발사체가 생성된다.

원하는 것은 Casting Animation을 먼저 재생하고, 애니메이션의 특정 프레임까지 기다리는 것이다.

그리고 캐릭터가 실제로 FireBolt를 발사하는 동작을 하는 순간 발사체를 생성한다.

 

이렇듯 특정 애니메이션 프레임에 도달했는지 확인하려면 Anim Notify와 같은 시스템을 사용할 수 있다.

FireBolt Motnage 내부에서 발사체가 생성되어야 하는 정확한 위치에 Notify를 배치할 수 있다.

따라서 다음 단계에서는 montage의 특정 지점까지 기다린 뒤 FireBolt Projectile을 생성하는 방법을 다룰 것이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/07   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함