구현 방법 ( 요약 )
- 콤보로 이어져 있는 애니메이션 구하기 ( 저는 믹사모에서 구했습니다. )
- 공격 모션 사이에 Animation event 추가
- Animation event 사이에 공격 버튼이 눌렸는지 체크
- 눌렸다면, 다음 공격 모션 실행
- 누르지 않았다면, Idle로 돌아감
- Animation이 끝날 때, EndCallback Animation Event를 추가하여 Idle로 돌아갈 수 있게 설정
1. 공격 모션 사이에 Animation Event 추가
- Event는 체크 시작 함수 ~ 체크 종료 함수 가 한 쌍으로 되어 있다.
2. 공격이 가능하면, 어떤 Animation State에서도 공격 Animation이 재생되게 Any State로 연결하여 세팅
체크 시작 함수
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 콤보 어택 체크 시작
void CheckStartComboAttack()
{
// 콤보 공격이 계속 되는지 체크하는 boolean 변수
isContinueComboAttack = false;
// 콤보 어택이 이어지지 않는다면, 코루틴을 종료하기 위해 IEnumerator 변수 사용
COR_CheckComboAttack = CheckComboAttack();
StartCoroutine(COR_CheckComboAttack);
// === Local Function ===
IEnumerator CheckComboAttack()
{
// 공격 버튼이 눌렸는지 체크
yield return CoroutineHelper.WaitUntil(() => Input.GetButtonDown("Fire1"));
// 눌렸다면, boolean 변수를 True로 바꾼다.
isContinueComboAttack = true;
}
}
1
2
3
4
5
6
7
// 콤보 어택 체크 종료
void CheckEndComboAttack()
{
// boolean 변수가 false 라면,
if (!isContinueComboAttack)
AttackAnimEnd(); // 애니메이션을 종료시킨다.
}