콤보 시스템은 연속된 입력으로 다단계 공격을 수행하는 시스템입니다.
| 요소 | 설명 | 예시 |
|---|---|---|
| Combo Index | 현재 콤보 단계 | 1타, 2타, 3타 |
| Combo Window | 입력 가능한 시간 구간 | 애니메이션 중 특정 구간만 입력 가능 |
| Combo Reset | 일정 시간 입력 없으면 초기화 | 2초 입력 없으면 1타부터 다시 |
콤보 시스템은 일종의 리듬게임 특정 시간대에 입력을 주면 지정된 콤보가 나가는 방식
실행되는 콤보와 각 시간 구간은 별도의 Data로 분리해서 협업자들이 편히 수정할 수 있도록 만들어야 한다.
Combo Window를 열고 닫는 것으로 콤보 공격에 대한 입력을 받는 구간을 결정


Montage Section은 Montage를 여러 구간(Section)으로 나눠서 특정 Section부터 재생 가능
굳이 하나의 몽타주에 다 담을 필요는 없지만, 안 담을 이유도 없다
| 장점 | 설명 |
|---|---|
| 하나의 Montage로 관리 | n개 Montage → 1개 Montage |
| Section 지정 재생 | PlayMontage(AM_Combo, "Combo2") → Combo2부터 재생 |
| 자연스러운 연결 | Section 간 Blend Time 자동 |
| Data Table 매칭 | SectionName으로 Data Table과 연동 |
if (ComboWindowTag.IsValid())
{
ComboWindowTagHandle = CachedASC->RegisterGameplayTagEvent(
ComboWindowTag,
EGameplayTagEventType::NewOrRemoved
).AddUObject(this, &UComboManagerComponent::HandleComboWindowTagChanged);
}
GasComponent->RegisterGameplayTagEvent
EGameplayTagEventType::NewOrRemoved
LogAnimMontage: Warning: JumpToSectionName Combo2 bEndOfSection: 0 failed for Montage AM_ComboAttack
구현 화면

| 개념 | 설명 |
|---|---|
| 각 콤보 = 다른 Ability | 블로킹 문제 해결 |
| ComboManagerComponent | 콤보 상태 관리 & Ability 선택 |
| Combo Window | GameplayTag로 관리 |
| Montage Section | 하나의 Montage, 여러 공격 |
강의에서는 FilterByPredicate를 통해 Number 배열에서 > 0 을 충족하지 못하는 값을 제거했지만 1~9 범위에서는 필요없는 조건이니 제거했습니다.
FString.Contains에는 FString만 넣어야 한다.
FString::Contains()는 기본적으로 “문자열(부분 문자열)”을 찾는 함수입니다. 인자로 FString 또는 const TChar*(널 종료 문자열)를 받는 형태가 일반적이라고 합니다.
[]는 상자에서 하나를 꺼내 쓰는 것, Contains는 상자 째로 넘겨서 겹치는 것이 있는 지 찾는 것입니다.