EnemyCharacter에 사용될 애니메이션인스턴스 코드입니다.
"이득우의언리얼 c++ 게임 개발의 정석" 을 참고하였습니다.
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();
private:
UPROPERTY(EditAnyWhere,BlueprintReadOnly,Category = Pawn, Meta=(AllowPrivateAccess = true))
float CurrentPawnSpeed;
// 애니메이션 몽타주 저장할 변수
UPROPERTY(VisibleDefaultsOnly, BlueprintReadOnly, Category = Attack, Meta = (AllowPrivateAccess = true))
UAnimMontage* AttackMontage;
};
반응형
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/SwordAttack_Montage.SwordAttack_Montage"));
if (ATTACK_MONTAGE.Succeeded())
{
AttackMontage = ATTACK_MONTAGE.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("AnimPlay"));
// 애니메이션 플레이
Montage_Play(AttackMontage, 1.0f);
}
}
공격 애니메이션 몽타주를 저장하여 호출받았을때 실행하는 함수PlayAttackMontage()가 있습니다.
ABP_Enemy
공격 애니메이션을 실행하기 위해서는 DefaultSlot을 추가할 필요가 있습니다.
'Unreal Engine 5 > EDR_Project' 카테고리의 다른 글
EDR_Project / AnimInstance (1) (0) | 2024.10.17 |
---|---|
EDR_Project / Attack (10) | 2024.10.17 |
EDR_Project / CanAttack (0) | 2024.10.17 |
EDR_Project / Detect (0) | 2024.10.17 |
EDR_Project / Patrol (0) | 2024.10.17 |