이번시간에는 Player 에 있는 기존 구현을 활용해 Combo 를 구현할 예정이다.
그 후, 무기로 옮겨 특정 무기에 대한 Table 을 불러와서 콤보를 구현할 예정이다.
이후 이것을 상속해 맨손 공격도 구현할 것이다.
콤보 정의
콤보는 이미 플레이어에 정의가 되어있으니 그부분을 가져올 예정이다
1. BP_Combo 에 변수생성
1) Integer 형 "ComboCount" 변수생성
2) Bool 형 "ExistNextCombo", "EnableNextCombo", "LastCombo" 생성
2. BP_Player > BeginPlay 이벤트 > 시퀀스 > "실행핀 제거" 하여 다음과 같이 세팅
3. BP_Player > 이벤트 그래프 > Attacking Event > Attacking Sword Event > Attacking Event 다음 부분 잘라내기
* Attacking Event : 콤보 입력을 시작, 콤보 입력을 열어주는거
4. BP_Combo > 이벤트 그래프 > BP_Weapon 에 있는 "Attack" 이벤트 생성 > 다음과 같이 붙여넣어 재 정의
1) BP_Weapon > CanAttack 함수 > 퓨어설정
2) Can Sword Attack 함수 다음과 같이 변경
3) SET > Set State 로 변경
Player Combo Montage 세팅
1) BP_Player > Play Sword Combo Montage 다음 부분 잘라내기
2) BP_Combo > Play Combo Montage 함수생성 및 붙여넣기 하여 다음과 같이 세팅
3) Combo Datas > Combo Montages 로 변경
4) 캐릭터 가져오기
다음 타깃이 캐릭터로 설정되어 있는데, Actor 에는 Character 가 없기 때문에 다음과 같이 캐릭터를 가져와 주어야 한다.
위와 같이 세팅하면 Enemy 든 Character 이든 맞는 캐릭터를 가져올 수 있다.
5) BP_Weapon > "GetCombat" 함수 복사, BP_Weapon > "Get Can Move" 함수 생성 및 붙여넣어 다음과 같이 세팅
6) BP_Weapon > "SetCanMove" 함수생성 및 다음과 같이 세팅
4) BP_Combo > Play Combo Montage 다음과 같이 세팅
BP_Combo 안에있는 BP_Weapon 안에있는 "Set Can Move" 이다.
5. BP_Combo > 이벤트 그래프 다음과 같이 세팅
1) BP_Player > Play Sword Combo Montage
2) BP_Player > Play Sword Combo Montage 삭제
Combo 쪽으로 구현되어 필요없어졌다.
6. BP_Player > 이벤트그래프 > Attacking Event > Attack Sword Event 다음부분 잘라내기
* 이 부분도 Notify 에서 실행되므로 Combo 에 넣어둔다.
BP_Combo > 이벤트 그래프 > Custom event 생성 > "PlayNextCombo" rename > 붙여넣기 하여 다음과 같이 세팅
7. BP_Player > 이벤트그래프 > Attacking Event > Attack Sword Event 다음부분 잘라내기
BP_Combo > 이벤트 그래프 > "End Attack 이벤트" 생성 > 붙여넣기 하여 다음과 같이 세팅 한 후, 빨간 부분을 제거해준다.
* 부모 것을 가져다 써야 하기 때문에 다음과 같이 세팅하여준다.
* New Param 은 Set Can Move 를 컴파일 하면 사라진다, 실수
다음과 같이 Can Move, True 여야 한다
8. BP_Player > 이벤트그래프 > Attacking Event > Attack Sword Event 다음부분 잘라내기
BP_Player > 이벤트 그래프 > Attacking Event 붙여넣기
9. BP_Combo 로 다 옮겼으니 "Attak Sword Event", "End Sword Attacking" 노드 삭제. 아무것도 들어있지 않음
Last Combo 변수도 지워주어 다음과 같이 만들어 준다.
10. BP_Player 의 변수도 다 지워 다음과 같이 세팅하여 준다.
이렇게 하면 Combo 를 옮기는 작업은 다 마쳐졌으니 노드 정리를 하여 준다.
BP_Combo 노드정리
1. BP_Combo > 이벤트 그래프 > Begin Play
그 다음에 BP_Combo 로부터 상속 받는게 BP_Sword 였으므로 순차적으로 "BP_Sword" 를 작업해 줄 예정이다
BP_Sword 세팅
1. BP_Sword > 변수 "Power" 삭제
Power 는 부모 (BP_Weapon) 에 있으므로 상속받으면 부모의 Power를 사용하게 되므로 이 클래스에 있는 Power는 삭제
2. 클래스 옵션 다음과 같이 "BP_Combo" 로 변경
3. BP_Sword > 이벤트 그래프 다음과 같이 세팅
4. BeginPlay 이벤트 > 부모 함수로의 호출 추가 > 다음과 같이 세팅
* 자신의 Begin Play 를 호출해서 실행한 후 부모의 Begin Play 를 호출하여 부모의 Begin Play 를 수행함
BP_Wizard 구현
이제 Sword 를 마쳤다. 다음으로는 Wizard 모드 무기를 구현해야 하는데, BP_HandFireBall 을 수정해서 BP_Wizard 를 구현할 것이다.
1. BP_HandFireBall > BP_Wizard 로 Rename
2. BP_Weapon 으로부터 직접상속 받기 때문에 다음과 같이 세팅하여 준다
3. BP_Player > 이벤트 그래프 > Attacking Event > Attack Wizard Event 다음 부분 잘라내기
BP_Wizard > 이벤트 그래프 > Begin Play 이벤트, Attack 이벤트, End Attack 이벤트 생성 및 다음과 같이 세팅
4. BP_Player > 이벤트 그래프 > Attacking Event > Attack Wizard Event 다음 부분 잘라내기
BP_Wizard > 이벤트 그래프 > End Attack 이벤트 하단에 붙여넣기
5. BP_Player > 이벤트그래프 > Attacking Event > Attacking 입력액션 다음을 제외하고 모두 삭제, EndAttacking 이벤트 다 삭제
위 부분 만 남겨둔다.
* BP_Wizard > 이벤트 그래프 정리된 것
지금까지는 Weapon 이랑 Interface 가 통신하는 것에 관해 다루었는데, 다음시간에는 Character 쪽에서 Weapon 을 Call 하는 것을 다룰 예정이다.
(위에 부분을 호출하는 것)
점차 정리가 되어 가는 것 같아 기대가 된다.
'Unreal Engine > 게임클래스 - 언리얼엔진 기초' 카테고리의 다른 글
[46강] 전체 구조 및 버그 해결 (0) | 2024.08.26 |
---|---|
[45강] Calling Weapon Attack (0) | 2024.08.26 |
[43강] Inherit Weapon (0) | 2024.07.31 |
[42강] Interface (0) | 2024.07.29 |
[41강] Inherit Weapon Diagram (0) | 2024.07.26 |