애니메이션 노티파이 생성
AnimNotify를 상속받아 AnimNotify_GASAttackHitCheck 클래스 생성
AnimNotify_GASAttackHitCheck 헤더파일
#include "CoreMinimal.h"
#include "Animation/AnimNotifies/AnimNotify.h"
#include "GameplayTagContainer.h"
#include "AnimNotify_GASAttackHitCheck.generated.h"
/**
*
*/
UCLASS()
class PROJECT_P_API UAnimNotify_GASAttackHitCheck : public UAnimNotify
{
GENERATED_BODY()
public:
UAnimNotify_GASAttackHitCheck();
protected:
virtual FString GetNotifyName_Implementation() const override;
virtual void Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation, const FAnimNotifyEventReference& EventReference) override;
protected:
UPROPERTY(EditAnywhere, Category = "Tag")
FGameplayTag TriggerGameplayTag;
};
- UAnimNotify_GASAttackHitCheck();
- 생성자
- virtual FString GetNotifyName_Implementation() const override;
- 부모함수 GetNotifyName에 UFUNCTION(BlueprintNativeEvent) 매크로가 붙어 있어
해당함수를 상속하려면 GetNotifyName() override가 아니라 _Implementation을 붙여야 함 - 에디터에서 해당 노티파이를 나타낼 이름을 설정하는 함수
- 부모함수 GetNotifyName에 UFUNCTION(BlueprintNativeEvent) 매크로가 붙어 있어
- virtual void Notify(~~~) override;
- 노티파이 실행부
- FGameplayTag TriggerGameplayTag;
- 태그를 이용해 공격판정GA를 실행
- 에디터에서 태그를 지정할 수 있도록 UPROPERTY(EditAnywhere, Category = "Tag") 지정
[언리얼 엔진 5] BlueprintNativeEvent에 대해서, 사용 시 주의할 점
https://docs.unrealengine.com/5.3/ko/ufunctions-in-unreal-engine/ UFunctions 게임플레이 클래스용 함수 생성 및 구현에 대한 개요입니다. docs.unrealengine.com 함수 지정자 목차에 관련 내용이 있다. 함수에 UFUNCTION(Blue
ciel45.tistory.com
Cpp파일
생성자
생성자에선 특별히 작성할 코드가 없음
GetNotifyName_Implementation
FString UAnimNotify_GASAttackHitCheck::GetNotifyName_Implementation() const
{
return FString(TEXT("GASAttackHitCheck"));
}
노티파이에 설정할 이름을 FString으로 리턴
Notify
void UAnimNotify_GASAttackHitCheck::Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation, const FAnimNotifyEventReference& EventReference)
{
Super::Notify(MeshComp, Animation, EventReference);
if (MeshComp)
{
AActor* OwerActor = MeshComp->GetOwner();
if (OwerActor)
{
FGameplayEventData PayLoadData;
//#include "AbilitySystemBlueprintLibrary.h" 추가
UAbilitySystemBlueprintLibrary::SendGameplayEventToActor(OwerActor, TriggerGameplayTag, PayLoadData);
}
}
}
- Super::Notify(MeshComp, Animation, EventReference);
- 부모함수 실행
- if (MeshComp)
- 노티파이의 오너가 메시컴포넌트가 있으면
- AActor* OwerActor = MeshComp->GetOwner();
- 메시컴포넌트의 오너액터를 가져옴
- if (OwerActor)
- 오너액터가 있으면
- FGameplayEventData PayLoadData;
- SendGameplayEventToActor 함수로 GA실행시 FGameplayEventData를 매개변수로 받아
FGameplayEventData에 필요한 데이터를 넣어 GA에 전달해줄 수 있음
- SendGameplayEventToActor 함수로 GA실행시 FGameplayEventData를 매개변수로 받아
- UAbilitySystemBlueprintLibrary::SendGameplayEventToActor
(OwerActor, TriggerGameplayTag, PayLoadData);- #include "AbilitySystemBlueprintLibrary.h" 추가
- 게임플레이태그를 트리거로 해당함수를 통해 GA를 발동시킬 수 있음
애니메이션 노티파이 설정
애니메이션 노티파이는 애니메이션 시퀀스 또는 애니메이션 몽타주에서 특정 프레임에 노티파이를 설정해
애니메이션 재생시 특정 프레임이 되면 노티파이가 실행됨
ex) 특정 프레임에 이펙트 재생, 사운드 재생, 공격 판정 등
- Notifies 아래 1번 행에서 우클릭을 하면 노티파이를 추가할 수 있음
노티파이를 추가하면 Timing에 빨간색으로 타이밍을 조절할 수 있음 - 콤보어택몽타주에 위에서 생성한 GASAttackHitCheck를 추가한 뒤 타이밍 설정
- 추가한 노티파이를 눌러 변수로 추가한 게임플레이태그를 설정할 수 있음
몽타주 생성 방법
우클릭 → 애니메이션 → 애니메이션 몽타주로 생성
- 제일위 Montage행에서 우클릭으로 섹션을 추가할 수 있음
Attack GA에서 해당 섹션 이름으로 섹션별로 몽타주를 실행함
- DefaultGroup행에서 화살표를 누르면 애니메이션 슬롯을 지정할 수 있음
오른쪽 하단 애셋 브라우저에서 애니메이션 시퀀스를 드래그 앤 드롭으로 추가할 수 있음 - Timing에서 섹션 위치와 노티파이의 타이밍을 설정할 수 있음
- Notifies에서 노티파이를 추가 제거할 수 있음
- 우측 하단 Montage Sections에서 흰색 사각형 클릭시
섹션 실행시 다음섹션으로 넘어갈지 안넘어 갈지 연결을 관리할 수 있음 - 위 스크린샷은 섹션연결을 다끊어 한 섹션 실행시 다음 섹션으로 넘어가지 않음
'포트폴리오 제작' 카테고리의 다른 글
Project_P 공격 판정 구현(3) Trace 어빌리티 태스크 생성 (0) | 2024.09.06 |
---|---|
Project_P 공격 판정 구현(2) AttackCheck GA 생성 (0) | 2024.09.06 |
Project_P ComboActionData 생성 및 콤보공격을 위한 캐릭터클래스 설정 (0) | 2024.09.04 |
Project_P Attack GA 생성(3) 블루프린트 설정 (0) | 2024.09.04 |
Project_P Attack GA 생성(1) 헤더파일 (0) | 2024.09.02 |