期待效果是有一个魔法道具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后粒子效果也消失。