[Unreal_블루프린트]#15_Combo Attack, 콤보 구현
Unreal 블루프린트 개발 중 "Combo Attack"에 대해 알아보겠습니다.
"블루 프린트" 활용에 대한 내용입니다.
Notify State
1. Notify State 생성
1. 블루프린트 클래스 -> Anim Notify State 생성
Anim Notify State는 "Begin ~ End" 구간을 설정하는 Notify입니다. Animation 플레이 중 "Begin ~ End" 구간에 진입하면 Notify가 호출됩니다!
2. Enable Next Combo 노티파이 스테이트 생성 및 구현
1. Received Notify Begin : Notify의 시작 지점에서 발동되는 함수
간단하게, BP_Player 객체의 "Enable Next Combo" 변수를 "True"로 설정합니다.
2. Received Notify End: Notify의 마지막 지점에서 발동되는 함수
간단하게, BP_Player 객체의 "Enable Next Combo" 변수를 "False"로 설정합니다.
* 추후에 있을 BP_Player에서 구현할 "Combo Attack"을 위해 준비합니다!
Combo Attack 구현
1. Attack Animation 정보를 담은 구조체 생성
2. Attack 애니메이션 정보를 담은 구조체 정의
1. Montage : Anim Montage 오브젝트 타입
2. Play Rate : Float 타입
3. Start Section Name : FName 타입
4. CanMove : Boolean 타입
2. Play Sword Combo Montage 함수 생성
3. 함수 구현
1. Sword Combo Datas
FCombo Table에서 생성한 구조체 형식들을 통해 "Attack 1 ~ 3" 애니메이션의 정보들을 담고 있습니다!
1 ~ 3번까지 존재하는 구조체를 "Sword Combo Datas" 배열에 저장합니다.
2. Sword Combo Count
"Sword Combo Datas" 구조체 배열의 Index를 결정합니다!
3. Play Anim Montage 생성
Sword Combo Datas 배열의 특정 구조체 내부의 정보들을 가져와 Play 합니다!
4. CanMove 변수 설정
Combo Attack 애니메이션 애셋을 재생할 동안 Character의 움직임을 제한하기 위해 Sword Combo Datas 배열이 담고 있는 구조체의 원소 중 "CanMove"변수를 캐릭터 블루프린트에서 별도로 생성한 동명의 변수 값으로 설정해줍니다.
* 다음으로, 이 함수를 호출해줄 커스텀 이벤트가 필요하겠죠?
Attacking Event 노드 그룹
1. Attack 입력 액션 수정
1. Attack 입력 액션
미리 매핑한 액션의 입력을 받아오기 위함입니다!
2. Enable Next Combo (Boolean 변수)
각 Attack 애님 몽타주의 "Notify State" 구간에서 변경되는 이 Boolean 변수는 다음 Attack 애님 몽타주를 플레이할지 여부를 결정합니다!
3. Sword Combo Count (Int 변수)
애님 몽타주가 순차적으로 재생되면서 몇 번째 애님 몽타주를 플레이할지 확인하는 변수입니다!
4. Sword Exist Next Combo (Boolean 변수)
애님 몽타주의 "Enable Next Combo" 노티파이 스테이트 구간이 지나면 "Enable Next Combo"가 곧 이어 "False"로 변경되며 "End Attack" 커스텀 이벤트에게 다음 공격을 재생시켜야한다고 알려줄 변수가 필요하죠!
5. Enable Next Combo 가 False 라면?
"Enable Next Combo" 노티파이 스테이트 구간에서 후속 입력이 없을 경우, 기존의 기본 공격 애님 몽타주를 플레이해야죠! 간단하게, "CanMove"가 "True"인지 체크하고, 캐릭터의 상태를 "Attacking"으로 변경하고 원래 기본 공격 애님 몽타주를 재생합니다!
2. Check Sword Next Combo 커스텀 이벤트 구현
1. Sword Exist Next Combo(Boolean)
"Attack" 입력 이벤트에서 설정한 Boolean 변수로, 현재 재생 중인 애님 몽타주의 "Enable Next Combo" 노티파이 스테이트 구간에 "Attack" 입력이 한번 더 들어왔는지 체크하는 변수입니다. 따라서, "Sword Exist Next Combo" 변수가 True 라면 현재 애님 몽타주에 이어서 다음 애님 몽타주를 재생해야 겠죠!
2. Sword Last Combo(Boolean)
현재 재생되고 있는 콤보 애님 몽타주 중 마지막 애님 몽타주가 재생되고 있다면, Sword Last Combo 변수를 True로 만듭니다!
3. End Attack 커스텀 이벤트 수정
1. Sword Exist Next Combo (Boolean 변수)
앞서 Attack 입력 이벤트 구현에서 "Enable Next Combo" 애님 노티파이 스테이트 구간에 후속 입력이 추가로 들어오면 "Sword Exist Next Combo" 변수를 "True"로 변경했었죠? 따라서, 애님 몽타주의 "End Attack" 애님 노티파이 스테이트 구간에서 "Sword Exist Next Combo" 변수가 True 인 채로 진입하면 다음 애님 몽타주를 재생함으로써 콤보 어택을 화면에 그려냅니다!
2. 그 외
다음 Combo Attack이 유효하지 않을 경우, 기존의 End Attack의 구현처럼 캐릭터 상태 변수 변경 등을 진행합니다.
Animation 블렌딩
Attack 1을 제외한 나머지 공격 애님 몽타주 들은 이동을 제한하고 플레이되는 "Full Body" 슬롯에 해당되기 때문에 Animation 블루프린트에서 구현한 "Layerd Blend per Bone"에 함께 블렌딩 되도록 Default 슬롯을 "Full Body"로 설정해주면 정상적으로 "Combo Attack"을 구현할 수 있습니다!
'게임개발 > Unreal 블루프린트' 카테고리의 다른 글
[Unreal_블루프린트]#17_Particle System, Trailer, 공격 이펙트 (0) | 2022.09.14 |
---|---|
[Unreal_블루프린트]#16_Camera Shake, 카메라 컨트롤 (0) | 2022.09.14 |
[Unreal_블루프린트]#14_Impact Animation, 피격 애니메이션 (1) | 2022.09.11 |
[Unreal_블루프린트]#13_Death Animation, Double Blending (0) | 2022.09.07 |
[Unreal_블루프린트]#12_Look At Attacker (0) | 2022.09.07 |