EDR_Project / AnimInstance (1)

24.10.17 애니메이션 인스턴스 업데이트 내용입니다.

애님인스턴트로 빼는것보다 기본생성자로 변수를 재정의 하여 사용하는것이 더 용이하다고 판단되어 사용하지 않습니다.

 

 

 

 

 

 

이 애니메이션 인스턴스는 MyCharacter의 자식 클래스인 EDR_Boss_Giant에서 사용될 애니메이션들을 가지고 있습니다.

 

Anim_EDR_AnimInstance.h

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once
//
#include "CoreMinimal.h"
#include "Animation/AnimInstance.h"
#include "Anim_EDR_AnimInstance.generated.h"

/**
 * 
 */
UCLASS()
class EDR_API UAnim_EDR_AnimInstance : public UAnimInstance
{
	GENERATED_BODY()
	
public:
	UAnim_EDR_AnimInstance();
	virtual void NativeUpdateAnimation(float DeltaSeconds) override;

	// 몽타주 실행 함수
	void PlayAttackMontage();

	void PlayDeathMontage();
	
private:
	UPROPERTY(EditAnyWhere,BlueprintReadOnly,Category = Pawn, Meta=(AllowPrivateAccess = true))
	float CurrentPawnSpeed;

	// 애니메이션 몽타주 저장할 변수
	UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = Attack, Meta = (AllowPrivateAccess = true))
	UAnimMontage* AttackMontage;

	UPROPERTY()
	TObjectPtr<class UAnimMontage> DeathMontage;
};
반응형

Anim_EDR_AnimInstance.cpp

// Fill out your copyright notice in the Description page of Project Settings.


#include "Anim_EDR_AnimInstance.h"
#include "GameFramework/Character.h"
#include "GameFramework/PawnMovementComponent.h"

UAnim_EDR_AnimInstance::UAnim_EDR_AnimInstance()
{
	CurrentPawnSpeed = 0.0f;

	// 공격 애니메이션 몽타주 저장
	static ConstructorHelpers::FObjectFinder<UAnimMontage> ATTACK_MONTAGE(TEXT("/Game/GJ/Animation/Enemy_Anim/GiantEnemy/JumpingAttack_Montage.JumpingAttack_Montage"));
	if (ATTACK_MONTAGE.Succeeded()) 
	{
		AttackMontage = ATTACK_MONTAGE.Object;
	}

	static ConstructorHelpers::FObjectFinder<UAnimMontage>DEATHANIM(TEXT("/Game/GJ/Animation/Enemy_Anim/GiantEnemy/Death1_Montage.Death1_Montage"));
	if (DEATHANIM.Succeeded())
	{
		DeathMontage = DEATHANIM.Object;
	}
}

void UAnim_EDR_AnimInstance::NativeUpdateAnimation(float DeltaSeconds)
{
	Super::NativeUpdateAnimation(DeltaSeconds);

	auto Pawn = TryGetPawnOwner();
	if (::IsValid(Pawn))
	{
		//  폰의 속력값 받아오는 함수
		CurrentPawnSpeed = Pawn->GetVelocity().Size();
	}
}

// 공격 애니메이션 실행 함수
void UAnim_EDR_AnimInstance::PlayAttackMontage()
{
	if (!Montage_IsPlaying(AttackMontage))
	{
		GEngine->AddOnScreenDebugMessage(-1, 2.0f, FColor::Yellow, TEXT("qqAnimPlay"));
		// 애니메이션 플레이
		Montage_Play(AttackMontage, 1.0f);
	}
}


// 사망 애니메이션 실행함수
void UAnim_EDR_AnimInstance::PlayDeathMontage()
{
	if (!Montage_IsPlaying(DeathMontage))
	{
		GEngine->AddOnScreenDebugMessage(-1, 2.0f, FColor::Yellow, TEXT("qqAnimPlay"));
		// 애니메이션 플레이
		Montage_Play(DeathMontage);
	}
}

 

 

DeathMontage EDR_Boss_Giant의 사망 애니메이션을 담는 객체입니다.

EDR_Boss_Giant의 체력이 0이 되었을 때 DeathMontage를 실행하는 함수를 추가하였습니다.

 

 

'Unreal Engine 5 > EDR_Project' 카테고리의 다른 글

EDR_Project / Character (1)  (4) 2024.10.17
EDR_Project / EDR_Boss_Giant  (0) 2024.10.17
EDR_Project / Attack  (10) 2024.10.17
EDR_Project / AnimInstance  (0) 2024.10.17
EDR_Project / CanAttack  (0) 2024.10.17