본문 바로가기
Unreal/Manual

Unreal C++ Animation Notification에 변수 추가하기

by Dev_카페인 2023. 12. 1.
반응형

[Unreal/C++] Animation Notification에 변수 추가하기

 

Anim Notify나 Anim Notify State를 사용하다 보면 하나의 Anim Notify로 여러 애니메이션에서 사용할 수 있도록 제작하고 싶어진다.

애니메이션에 따라, 노티파이에 따라 다른 값을 전달할 수 있도록 제작하는 것은 변수만 추가해주면 된다.

다만 프로젝트 파일들 중 에디터 설정 값을 저장하고 있는 파일은 삭제하지 않도록 조심해야 한다.

 

기본적으로 나의 캐릭터는 두개의 총을 소유하고 있다.

변수를 사용하지 않는다면 좌우 무기의 Muzzle 소켓을 위해 두개의 노티파이를 따로 제작해야 했을 것이다.

하나의 Notify로 다른 값을 설정하고 싶다면 클래스에서 블루프린트가 사용할 수 있도록 변수를 설정해 주면 된다.

#pragma once

#include "CoreMinimal.h"
#include "Animation/AnimNotifies/AnimNotify.h"
#include "AN_Fire_DoubleShot.generated.h"

UCLASS()
class MAINPROJECT_API UAN_Fire_DoubleShot : public UAnimNotify
{
	GENERATED_BODY()

public:
	FString GetNotifyName_Implementation() const override;

	virtual void Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation, const FAnimNotifyEventReference& EventReference) override;

	// 변수를 추가
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
		FName SocketName;
};

 

몽타주에 Notify를 추가하고 

 

해당 Notify를 클릭하면 디테일 창에서 변수가 추가된 것을 볼 수 있다.

이를 이용하여 하나의 노티파이로 다른 동작을 기대할 수 있다.

 

// Notify.cpp

void UAN_Fire_DoubleShot::Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation, const FAnimNotifyEventReference& EventReference)
{
	Super::Notify(MeshComp, Animation, EventReference);

	ACharacter_TwinBlast* character = Cast<ACharacter_TwinBlast>(MeshComp->GetOwner());

	if (character == nullptr) return;
	
	//character->BulletFiring(MeshComp->GetSocketByName("Muzzle_01"));
	character->BulletFiring(MeshComp->GetSocketByName(SocketName));

}
반응형