캐릭터 연속공격 구현
몽타주 애니메이션 생성 및 적용
마우스 클릭을 통한 공격을 위해 먼저 Attack의 몽타주 애니메이션을 사용할 데이터에셋(SwordActingData)를 생성한다.
(Attack_1 ~ 4까지 애니메이션의 몽타주를 생성해주고 SwordActingData에 넣었다. 몽타주의 슬롯도 FullBody로 변경)
이어서 만들어준 SwordActingData를 사용하기 위해 BP_Sword의 Montage Data map에 새로 추가해준다.
공격키 입력 추가
마우스 좌클릭과 우클릭으로 공격을 구현할 것이다.
캐릭터의 입력을 담당하는 BP_PlayerController에 가서 ActionA, ActionB 추가하여 메시지 발생시키기.
BP_CharacterInterface에서 발생시킬 메시지 함수를 먼저 만든다.
이후 BP_PlayerController에서 각각 연결해줘서 입력 시 메시지를 보내게 된다.
이제 보내진 메시지 이벤트를 Character에서 받아서 이어지게 된다.
몽타주 애니메이션의 Blend In / Blend Out
- Blend In : 해당 몽타주를 재생할 시, 기존의 애니메이션과 현재 몽타주를 어느정도 혼합시켜 재생될 지 정한다.
- Blend Out : 해당 몽타주 재생이 끝나갈 때, 다음 애니메이션으로 넘어갈 때 어느정도 혼합시켜 넘어갈 지 정한다.
만약 몽타주와 몽타주 사이의 Blend Out/In은 무조건 다음 몽타주의 Blend In의 옵션이 우선 시 된다.
결국 하나의 몽타주에 각 Attack 몽타주들을 모아서 재생하는 것보다, 개별적으로 사용하는 것이 좀 더 자연스러운 애니메이션 재생을 나타내줄 수 있다.(그래서 이곳에서 노티파이를 사용하지 않았다.)
노티파이 스테이트(Notify State)
노티파이 스테이트를 추가하여 사용할 수 있다. Begin과 End를 가지고 있다.
노티파이 스테이트는 블루프린트 클래스로 따로 만들어줄 수도 있다.
모든 클래스 선택에서 AnimNotifyState를 선택하여 추가한다.(ANS_AttackEnabled)
이렇게 만든 AnimNotifyState 내부에 오버라이드 가능한 함수를 보면 4가지가 있다.
- Get Notify Name : 지정한 이름으로 NotifyName 출력
- Received Notify Begin : 시작지점 호출
- Received Notify End : 끝 지점 호출
- Received Notify Tick : 해당 노티파이 스테이트 구간에 진입 시 계속 호출
Does Implement Interface
특정 오브젝트를 받아와서 선택한 Interface를 구현했는지 여부를 확인해주는 노드이다.
이를 통해 Interface가 구현되어있지 않다면 Return Value로 그 여부를 반환해줌으로써 Interface의 구현 여부를 확인한다.
(IsValid와 비슷)
'언리얼엔진' 카테고리의 다른 글
23. 블렌드 스페이스(8방향) / Calculate Direction (0) | 2023.06.01 |
---|---|
22. 블루프린트 함수 라이브러리 / 애니메이션 스테이트 (0) | 2023.06.01 |
20. Layered blend per bone / 애니메이션 슬롯 / Root Motion (0) | 2023.05.29 |
19. Weapon 교체 로직 / 선택(Select) (1) | 2023.05.26 |
18. Notify(노티파이) (0) | 2023.05.24 |