나이아가라 FX를 Player에 추가한 상태에서 시작한다. C++에서는 찾기만 할꺼다.
niagaraFX = GetComponentByClass< UNiagaraComponent>();
플레이어 클래스 헤더에 niagaraFX 변수와 ShowFX() 함수를 선언한다.
public:
UPROPERTY(EditAnywhere, Category = "Animation")
class UNiagaraComponent* niagaraFX;
void ShowFX(bool show);
플레이어.cpp에 블루프린트에서 나이아가라FX와 niagaraFX변수를 연결해준다.
게임시작시는 이펙트를 꺼준다.
void ATPlayer::BeginPlay()
{
....
niagaraFX = GetComponentByClass< UNiagaraComponent>();
niagaraFX->SetVisibility(false);
}
ThirdPersonTemp.Build.cs를 열어 Niagra를 추가해준다
public class ThirdPersonTemp : ModuleRules
{
public ThirdPersonTemp(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine",
"InputCore", "EnhancedInput", "Niagara" });
Niagra를 추가했으므로 언리얼에디터 VisualStudio를 끄고 프로젝트폴더에서 솔루션을 지우고 다시만들어 솔루션을 다시 연면 전체적으로 다시 리빌드 된다.
이펙트를 설정해주는 함수를 구현한다. 점프시 이펙트는 켜고 캐릭터메시는 끄고 착지하면 반대로 할것이다.
void ATPlayer::ShowFX(bool show)
{
if (!niagaraFX) {
niagaraFX = GetComponentByClass< UNiagaraComponent>();
}
bool _show = GetCharacterMovement()->IsFalling();
niagaraFX->SetVisibility(_show);
GetMesh()->SetVisibility(!_show);
}
AnimNofify C++클래스를 만들어 이름을 AnimNotifyJump로 한다.
헤더에 Notify 함수를 선언한다. 플레이어 클래스 참조도 만들어 준다 Notify는 부모클래스를 F12로 찾아 검색하면 된다. 함수앞에는 virtual 뒤에는 override를 붙여준다.
public:
virtual void Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation,
const FAnimNotifyEventReference& EventReference) override;
class ATPlayer* tpsPlayer;
함수를 구현해준다 애니메이션에서 Notify가 오면 플레이어의 ShowFX()함수를 불러준다.
void UAnimNotify_NS_Skeleton::Notify(USkeletalMeshComponent* MeshComp, UAnimSequenceBase* Animation, const FAnimNotifyEventReference& EventReference)
{
tpsPlayer = Cast<ATPlayer>(MeshComp->GetOwner());
if (tpsPlayer) {
tpsPlayer->ShowFX(true);
}
}
만든후 이 클래스를 이용해 BP_AnimNotifyJump 블루프린트를 만든다. 그래야 애니메이션 에디터에서 보인다.
점프 애니메이션을 열고 우클릭하고 자신이 만든 Notify 블루프린트를 선택한다. 이러면 애니메이션이 플레이될때 Notify가 발생된다. 애니메이션 시작지점에 두면 좋다 끝에두면 딜레이가 발생하는듯 하다.
'언리얼레퍼런스 > 캐릭터애니메이션' 카테고리의 다른 글
RPG 게임처럼 캐릭터 움직임 구현 (0) | 2023.11.15 |
---|---|
캐릭터애니메이션 언리얼 사이트 문서 (0) | 2023.11.15 |
마우스클릭으로 이동하기 (1) | 2023.11.15 |
적이 플레이어 따라가기 (1) | 2023.11.14 |
캐릭터 움직이기 (0) | 2023.11.08 |