입력추가
이렇게 좌클릭을 눌렀을 시 동작을 하게끔 만들어 줄 것임.
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개를 해주면 되는데,
- 캐릭터 블루 프린트 클래스를 받아올 것
- 캐릭터 클래스 내부에 존재하는 함수에,
이런 느낌으로 진행이 될 거를 암시.
그니까 이제 입력을 눌렀음 → 콤보 커맨드 발동 → 이제 콤보가 플레이 중이었다면, 다음 콤보로 가고
아니라면 이제 콤보 시작.
콤보 몽타주가 완료가 되었다면 이벤트 호출을 이용해주기로 한다.⇒ 델리게이트 활용.
(이벤트를 등록하는 구조)
'언리얼C++게임개발 > 08.애니메이션 시스템 활용' 카테고리의 다른 글
애니메이션 노티파이 (1) | 2024.02.06 |
---|---|
델리게이트 (0) | 2023.11.26 |
애니메이션 시스템 활용 - 애니메이션 몽타주 (0) | 2023.11.26 |