ue4给actor添加粒子效果

期待效果是有一个魔法道具actor,初始化粒子效果比较显眼,玩家可以捡起魔法道具,捡起后道具消失。

开始的时候用的函数是SpawnEmitterAtLocation,字面意思就是在某一个位置产生效果,传参物体,粒子效果,位置,剩下默认。在beginplay事件调用。代码如下:

cpp:

// Called when the game starts or when spawned
void ACarryingObject::BeginPlay()
{
	Super::BeginPlay();
	//UGameplayStatics::SpawnEmitterAttached(StaticFX, MeshComp);
	PlayEffect();
}

//碰撞效果函数
void ACarryingObject::PlayEffect()
{
	UGameplayStatics::SpawnEmitterAtLocation(this, PickUpFX, GetActorLocation());
}

//actor初始效果函数
void ACarryingObject::PlayEffect()
{
	UGameplayStatics::SpawnEmitterAtLocation(this, StaticFX, GetActorLocation());
}

h:

	//碰撞效果函数
	void PlayEffect();

	//碰撞效果函数
	void InitEffect();

	//碰撞粒子效果
	UPROPERTY(EditDefaultsOnly, Category = "Effects")
	class UParticleSystem* PickUpFX;

	//本身粒子效果
	UPROPERTY(EditDefaultsOnly, Category = "Effects")
		class UParticleSystem* StaticFX;

但是问题是actor销毁后粒子效果还是存在,与预期想要的效果不一样。

后改用SpawnEmitterAttached函数,字面意思,附着在某组件产生效果,传参粒子效果,附着的component,代码如下

cpp:

// Called when the game starts or when spawned
void ACarryingObject::BeginPlay()
{
	Super::BeginPlay();

	//初始化actor粒子效果
	InitEffect();
}

//碰撞效果函数
void ACarryingObject::PlayEffect()
{
	UGameplayStatics::SpawnEmitterAtLocation(this, PickUpFX, GetActorLocation());
}

//actor初始效果函数
void ACarryingObject::InitEffect()
{
	UGameplayStatics::SpawnEmitterAttached(StaticFX, MeshComp);
}

这样摧毁actor后粒子效果也消失。

你可能感兴趣的:(UE4,c++,unreal,ue4,c)