⏱️

【UE5】C++でNiagaraSystemを実行する方法

2024/10/27に公開

概要

C++でNiagaraSystemを生成してエフェクトを出したいときがありました。
そのやり方が分からなかったので調べたことを短いですが記事にしてまとめました。

同じような悩みを持った方の助けになれば幸いです。

環境

UE5.4.4

やり方

使っているシステムは違いますが、こちらのフォーラムが参考になりました。
UNiagaraFunctionLibraryというものがあるそうです。

今回はこちらの関数を使います

Engine\Plugins\FX\Niagara\Source\Niagara\Public\NiagaraFunctionLibrary.h
static NIAGARA_API UNiagaraComponent* SpawnSystemAtLocation(const UObject* WorldContextObject, class UNiagaraSystem* SystemTemplate, FVector Location, FRotator Rotation = FRotator::ZeroRotator, FVector Scale = FVector(1.f), bool bAutoDestroy = true, bool bAutoActivate = true, ENCPoolMethod PoolingMethod = ENCPoolMethod::None, bool bPreCullCheck = true);

BPでいうとこれになります。

C++での使い方はこういう風になります(自作ActorクラスにNiagaraSystemをもたせる前提での説明になります)

ExampleCPPNiagaraSystemActor.cpp
UNiagaraSystem* SpawnNiagaraSystem; //UPROPERTYで設定したりLoad関数などで取得
FVector Location = TargetActor->GetActorLocation();
FRotator Rotation = TargetActor->GetActorRotation();
UNiagaraFunctionLibrary::SpawnSystemAtLocation(WorldContextObject,SpawnNiagaraSystem,Location,Rotation); //ActorなどGetWorldを実装してるクラスはWorldContextの部分はthisで問題ない

Discussion