본문 바로가기

언리얼C++게임개발/08.애니메이션 시스템 활용

콤보공격

몽타지 에디터
애니메이션추가
섹션추가

 

지우기로 섹션연결 끊기

입력추가

입력추가

이렇게 좌클릭을 눌렀을 시 동작을 하게끔 만들어 줄 것임.

static ConstructorHelpers::FObjectFinder<UInputAction> INPUT_ATTACK(TEXT("'/Game/ThirdPerson/Input/Actions/IA_Attack.IA_Attack'"));
if (INPUT_ATTACK.Object) {
		AttackAction = INPUT_ATTACK.Object;
};

일단은 다음과 같이 어택에 관한 InputAction을 받아주고 이에 상응하는 함수를 만들어 주었다.

그 이후에 바인딩을 해주는데,

문제는 지금 이 캐릭터만 해당 몽타주를 사용할 것이 아니라, 다른 캐릭터도 이를 사용하기 위해서 기본 플레이어 아래 (ABCharacterBase)에 생성을 진행해주기로 한다.

그래서 ProcessComboCommand를 이용하기로 해보는데, 이제 InputAction이 진행이 된다면,

이제 저 함수를 호출하기로 만들어준다.

저 함수의 경우에는 몽타주를 재생해주는 함수!

먼저 몽타주를 재생하기 위해서는 AnimInstance 에 관한 정보가 필요하다.

void AABCharacterBase::ProcessComboCommand()
{
	UAnimInstance* AnimInstance = GetMesh()->GetAnimInstance();
	AnimInstance->Montage_Play()
}

다음과 같이 가져다 줄 것인데, 이제 이 의미가 뭐냐면, 애님 인스턴스는 스켈레탈 매시에 할당이 되는 구조라서, 이렇게 가져오고, 특정 몽타주를 재생하게 만들어주는 것이다.

이를 위해서는 몽타주 애셋이 필요하다는 것.

문제는 몽타주 에셋이 필요한 건 좋은데, 매번 상황에 입거해서 코드를 고치는 건 옳지 않음.

그렇기 때문에, 이를 위해서 블루프린트로 확장시키고 이를 넣어주는 방법을 택할 것임.

(아 이걸 활용하면 되겠네)

애님그래프에 슬롯추가해서 몽타지 재생할수 있게 해줌

이렇게 넣어주는 방법을 택해준다.

이렇게 넣어주게 된다면 몽타주 내부에 있는 섹션을 호출한다면 몽타주 이미지가 나오게 될 것이고,

만약에 아니라고 한다면, 기본적으로 존재하는 애니메이션이 호출이 될 것임이 확실함.

마지막으로 2개를 해주면 되는데,

 

  1. 캐릭터 블루 프린트 클래스를 받아올 것
  2. 캐릭터 클래스 내부에 존재하는 함수에,

이런 느낌으로 진행이 될 거를 암시.

그니까 이제 입력을 눌렀음 → 콤보 커맨드 발동 → 이제 콤보가 플레이 중이었다면, 다음 콤보로 가고

아니라면 이제 콤보 시작.

콤보 몽타주가 완료가 되었다면 이벤트 호출을 이용해주기로 한다.⇒ 델리게이트 활용.

(이벤트를 등록하는 구조)