[UE4] 콤보공격 (Combo Attack)
언리얼4를 이용하여 한손검(Sword) 콤보공격을 구현하였다.
나중에도 까먹지 않도록 콤보공격의 구현 과정을 정리해보자 !
1. 마우스 좌클릭을 액션매핑으로 설정하여 공격키로 지정한다.
2. Action 입력 액션이 감지되면 콤보공격 상태인지 Branch로 먼저 검사한다.
Enable Combo변수는 기본값이 False이므로 처음 공격을 한 순간은 무조건 False값이 들어가게되어 아래줄에 있는 Play Anim Montage가 실행되고, 첫 공격이 실행된다.
3. 이때 첫 공격을 수행할 때 검을 장착중인지(Equipped), 공격중인 상태인지(Attacking)를 검사하여 모든 조건문을 통과하여 공격할 수 있는 상황이라면 공격중이라는 Attacking 변수를 True로 바꾼 뒤 공격 몽타주를 실행한다.
Montages 배열에는 콤보공격에 사용되는 3가지 몽타주가 들어있고, Combo Index 변수를 사용하여 공격 별 몽타주를 실행시킨다.
공격 몽타주에는 데미지 처리에 필요한 Collision 노티파이 스테이트와 Combo 노티파이 스테이트가 존재한다.
4. Combo 노티파이 스테이트의 Begin이 호출되면 Enable Combo변수를 True로 변경해두고 End구간이 호출되면 Enable Combo 변수를 False로 변경한다.
5. Enable Combo변수가 True로 변해있을 때 플레이어가 마우스 좌클릭으로 액션 입력을 주면 플레이어 블루프린트에서 조건문 True로 넘어가게되고, 콤보가 존재한다는 Exist Combo 변수를 활성화(True)시킨다.
이때 콤보가 중복으로 활성화되지 않도록 Enable Combo는 바로 초기화(False)해준다.
공격 애니메이션 중 Combo 노티파이 스테이트구간이 끝나면 Begin Action 노티파이와 End Action 노티파이 구간이 존재한다. Begin Action 노티파이가 실행되면 플레이어 블루프린트에 존재하는 Begin Action함수를 호출하게 되어있다.
6. 이때 아까 활성화시켰던 콤보가 존재한다는 Exist Combo 변수가 True라면 중복을 없애기 위해 False로 초기화한 뒤 Combo Index값을 1++하여 다음 콤보 공격 애니메이션이 Anim 몽타주에 플레이되도록 한다.
7. 위와 같은 과정을 두번째 공격 애니메이션의 몽타주에도 적용시키고, 마지막 콤보공격인 세번째 애니메이션 몽타주에는 다음으로 넘어갈 공격이 없으니 애니메이션이 끝날 즈음 End Action 노티파이만 실행한다.