UE4/애니메이션

Ureal)애니메이션 몽타주

PJNull 2022. 1. 15.
728x90
반응형

애니메이션 몽타주

애니메이션 몽타주는 한 액션에 여러 애니메이션을 붙이고 싶을때 사용한다.

 

몽타주 생성

몽타주 생성방법은 해당매쉬의 Create Asset->Anim Montage이다.

생성한 몽타주는 이런식으로 애니메이션들을 이어붙이거나 분기점을 만드는 식으로 관리할 수 있다.

 

공격모션 바인딩

저번 포스팅때 처럼 Input에서 엔진에 Attack을 바인딩 시켜준다.

엔진에 바인딩후 캐릭터클래스에도 바인딩 시킨다.

//MyCharacter
PlayerInputComponent->BindAction(TEXT("Attack"),EInputEvent::IE_Pressed,this,&AMyCharacter::Attack);

하지만 Jump와는 달리 Attack은 엔진에서 제공해주지 않기에 만들어주어야한다.

Attack의 경우 플레이어가 클릭해야하기 때문에 프레임마다 확인하는것 보단 발생했을때 Anim Instance에서 추출하는편이 메모리를 아낄수 있다고 생각한다.

//Anim Instance

public:
	UMyAnimInstance();
    void PlayAttackMontage();


private:    
	UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Pawn, Meta = (AllowPrivateAccess = true))
	UAnimMontage* AttackMontage;
UMyAnimInstance::UMyAnimInstance()
{
	static ConstructorHelpers::FObjectFinder<UAnimMontage> AM(TEXT("애니메이션 몽타주 주소"));
	if (AM.Succeeded())
	{
		AttackMontage = AM.Object;
	}
}

void UMyAnimInstance::PlayAttackMontage()
{
	if (!Montage_IsPlaying(AttackMontage))
	{
		Montage_Play(AttackMontage,1.f);
	}
}
//MyCharacter
void AMyCharacter::Attack()
{
	auto AnimInstance=Cast<UMyAnimInstance>(GetMesh()->GetAnimInstance());
	if (AnimInstance)
	{
		AnimInstance->PlayAttackMontage();
	}
}

 

공격모션 적용

몽타주를 사용하기 위해서는 애니메이션 블루프린트에서 Default Slot을 추가해주고 적용해야한다.

적용시킨 결과는 다음과 같다.

728x90
반응형

'UE4 > 애니메이션' 카테고리의 다른 글

Ureal)애니메이션 노티파이  (0) 2022.01.16
Ureal)애니메이션 델리게이트  (0) 2022.01.16
Ureal)애니메이션 스테이트 머신  (0) 2022.01.15
Ureal)애니메이션 기초  (0) 2022.01.14

댓글