2024-04-22
느낀점
SpawnEmitterAtLocation로 projectile를 스폰시키는 방법, UParticleSystem, UParticleSystemComponent로 파티클을 추가하는 방법을 배웠다. 게임의 디테일을 완성하는 단계에서 쓰인다. UParticleSystem과 UParticleSystemComponent의 차이점을 잘 알아두도록 하자.
TIL
- SpawnEmitterAtLocation
- UParticleSystem
- UParticleSystemComponent
SpawnEmitterAtLocation
https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/Kismet/UGameplayStatics/SpawnEmitterAtLocation/1?application_version=5.3
- Plays the specified effect at the given location and rotation, fire and forget.
- 주어진 위치와 회전에대해 이펙트를 재생한다.
- 이펙트가 끝난후에 system은 사라진다.
- 다음처럼 사용한다. 매개변수가 여러개 있는데 상당히 자세하게 있으므로 잘 보고 사용하자.
if(OtherActor && OtherActor != this && OtherActor != MyOwner)
{
if(HitParticles)
{
UGameplayStatics::SpawnEmitterAtLocation(this, HitParticles, GetActorLocation(), GetActorRotation());
}
}
UParticleSystem
https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/Particles/UParticleSystem?application_version=5.3
- A ParticleSystem is a complete particle effect that contains any number of ParticleEmitters.
- Created with UGameplayStatics::SpawnEmitterAtLocation
- 몇 개의 ParticleEmitters를 포함하는 완성된 파티클 이펙트이다.
- 하나의 싱글 시스템에서 보이는 파티클 이펙트를 만들 수 있다.
- Syntax는 다음과 같다
class UParticleSystem : public UFXSystemAsset
- 다음처럼 private 헤더파일에 노출시키고 블루프린트에서 이펙트를 추가해주면 된다
UPROPERTY(EditAnywhere, Category="Combat")
UParticleSystem* HitParticles;
UParticleSystemComponent
https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/Particles/UParticleSystemComponent?application_version=5.3
- A particle emitter.
- Created with CreateDefaultSubobject
- 파티클 이미터. 라고 아주 짧게 설명이 나와있다
- UParticleSystemComponentsms는 UParticleSystem을 관리하는 컴포넌트이다.
- UParticleSystem은 UGamePlaystatics::SpawnEmitterAtLocation을 통해 월드에 스폰되거나 UParticleSystemComponent를 통해 제어될 수 있다
AProjectile::AProjectile()
{
PrimaryActorTick.bCanEverTick = false;
TrailParticles = CreateDefaultSubobject<UParticleSystemComponent>(TEXT("Smoke Trail"));
TrailParticles->SetupAttachment(RootComponent);
}
UParticleSystem vs UParticleSystemComponent
-
UParticleSystem은 UGameplayStatics::SpawnEmitterAtLocation와 함께 만들어지고 필요할때 나온다
-
UParticleSystemComponent은 CreateDefaultSubobject로 만들어진다. RootComponent에 attach 할 수 있다. 그리고 Template variable
을 가지고 있다. 게임동안 항상 나오게 한다.