본문 바로가기
Unreal Engine/[UE4] RPG Project

4. 캐릭터 콤보공격, 플레이어 입력구조 변경(플레이어 컨트롤러-폰 구조)

by JJPearl 2022. 1. 15.
반응형

캐릭터 콤보공격

https://jjpearl.tistory.com/42?category=1070610 

 

[UE4 C++] 애니메이션 시스템 활용(Animation Montage, 델리게이트, Animation Notify)

캐릭터에 공격 기능을 만들려 할 때 스테이트 머신을 사용한다면 모든 공격에 대한 스테이트, 트랜지션을 만든다면 스테이트를 계속 추가해야 하고 스테이트 머신이 복잡해질 것이다. 애니메이

jjpearl.tistory.com

애니메이션 노티파이를 활용해 콤보 공격에 필요한 애니메이션 몽타주를 만들었다.

콤보 공격 몽타주

  • Attack1/2/3/4/5 : 5콤보까지 가능하도록 섹션을 나눴다.
  • AttackHitCheck : 추후 데미지 전달 구현할 때 공격 판정을 할 타이밍
  • NextAttackCheck : 다음 공격(콤보)으로 점프할 타이밍 파악

다음 공격으로 넘어갈지 판단하는 NextAttackCheck 노티파이는 너무 애니메이션의 끝 부분, 끝나기 직전에 놓지 않도록 한다. 너무 애니메이션 끝 부분에 배치하면 노티파이 신호를 받을 시간이 너무 짧아져 노티파이 함수를 호출하지 못한다. 

 

->

AnimInstance 클래스에 콤보 카운트를 전달받으면 해당 몽타주 섹션을 재생하도록 기능 구현.

NextAttackCheck 애니메이션 노티파이가 발생할 때 캐릭터에 전달할 델리게이트를 선언 -> 애니메이션 노티파이 함수에서 이를 호출.

추후 공격 판정 위한 AttackHitCheck 델리게이트도 선언.

여러개의 함수가 등록되도록 멀티캐스트 델리게이트
애님 인스턴스.h에서 선언 

 

애님 인스턴스.cpp / 멀티캐스트에 등록된 모든 함수를 호출하는 Broadcast()

캐릭터에서 공격 명령 받았을 때 로직을 애님 인스턴스의 델리게이트와 등록한다.

캐릭터.cpp / 델리게이트에 등록할 로직

 

 

플레이어 컨트롤러 - 폰 입력 구조 변경

플레이어 컨트롤러에서 캐릭터의 입력을 처리하기 위해서 기존에는 플레이어 컨트롤러에 플레이어의 로직까지 모두 구현했었다.

하지만 입력을 받아 처리할 공격과 같은 로직이 점점 많아지고 구조를 변경하는게 맞다고 느꼈다.

플레이어 컨트롤러 = 뇌,의지

폰 = 몸뚱이, 명령을 받아 어떻게 행동 할건지 로직을 구현

라고 생각하고 구조를 짜는 것이 좋다.

변경한 플레이어 컨트롤러 입력 함수. 캐릭터의 로직 함수를 불러오도록 구현.
캐릭터에 로직 구현.

반응형