애니메이션 편집기라고 보면 된다.
메시를 더블클릭해서 들어온 후 해당 메뉴에서 애님 몽타주를 만들면 편집 창으로 들어올 수 있다.
애셋 브라우저에서 애니메이션 몇 개를 끌어오면 연속되어 재생되는것을 확인할 수 있다.
원한다면 애니메이션 세그먼트에서 재생 시간, 재생 속도, 루프 횟수를 조절할 수 있다.
점프같은 경우는 AnimInstance에서 캐릭터의 상태를 매 틱 체크하는 방식이었지만 반대로 공격은 캐릭터에서 발생 시 AnimInstance에 접근해서 Attack Montage를 실행 시킬 것이다.
// MyAnimInstance.h
class TESTUNREALENGINE_API UMyAnimInstance : public UAnimInstance
{
GENERATED_BODY()
public:
UMyAnimInstance(); // 생성자 추가
virtual void NativeUpdateAnimation(float DeltaSeconds) override;
void PlayAttackMontage(); // 메소드 추가
private:
// .. 생략
UPROPERTY(EditAnywhere, BlueprintReadOnly, Category = Pawn, Meta = (AllowPrivateAccess = true))
UAnimMontage* AttackMontage; // Montage 추가
};
// ----------
// MyAnimInstance.cpp
UMyAnimInstance::UMyAnimInstance()
{
static ConstructorHelpers::FObjectFinder<UAnimMontage> AM(TEXT("AnimMontage'/Game/Animations/Greystone_Skeleton_Montage.Greystone_Skeleton_Montage'"));
if (AM.Succeeded())
{
AttackMontage = AM.Object;
}
}
void UMyAnimInstance::PlayAttackMontage() // 실제 Montage 실행부
{
if (!Montage_IsPlaying(AttackMontage))
{
Montage_Play(AttackMontage, 1.f);
}
}
// ------------
// MyCharacter.cpp
void AMyCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
// .. 생략
PlayerInputComponent->BindAction(TEXT("Attack"), EInputEvent::IE_Pressed, this, &AMyCharacter::Attack);
}
void AMyCharacter::Attack()
{
// MyAnimInstance에 접근
auto AnimInstance = Cast<UMyAnimInstance>(GetMesh()->GetAnimInstance());
if (AnimInstance)
{
// 메소드 직접 실행
AnimInstance->PlayAttackMontage();
}
}
Attack을 바인딩 했으니 당연히 입력에서 Attack을 마우스 왼클릭으로 설정해주면 된다.
코드 및 AnimGraph를 완성하면 좌클릭시 설정한 애니메이션 몽타주가 재생된다.
'언리얼 엔진 > 언리얼 엔진4 입문' 카테고리의 다른 글
[UE4 입문] 애니메이션 노티파이 (0) | 2022.09.02 |
---|---|
[UE4 입문] 델리게이트 (0) | 2022.09.02 |
[UE4 입문] 스테이트 머신 (0) | 2022.09.02 |
[UE4 입문] 애니메이션 기초 (0) | 2022.09.01 |
[UE4 입문] 블루프린트 클래스 (0) | 2022.09.01 |