0. 개요
레벨업하면 나이아가라 시스템을 사용하여 파티클을 출력한다.
1. 나이아가라 컴포넌트
(1) 캐릭터에 나이아가라 컴포넌트 생성, 부착
AuraCharacter 클래스의 퍼블릭 섹션에 작성한다.
UPROPERTY(VisibleAnywhere, BlueprintReadOnly)
TObjectPtr<UNiagaraComponent> LevelUpNiagaraComponent;
AAuraCharacter::AAuraCharacter()
{
LevelUpNiagaraComponent = CreateDefaultSubobject<UNiagaraComponent>("LevelUpNiagaraComponent");
LevelUpNiagaraComponent->SetupAttachment(GetRootComponent());
LevelUpNiagaraComponent->bAutoActivate = false;
캐릭터가 레벨업 할 때 나이아가라 효과가 작동할 것이므로, bAutoActivate를 false로 설정한다.
(2) 클라이언트 RPC
캐릭터의 레벨업 효과가 서버 내의 다른 플레이어에게 노출되게 하기 위하여 RPC를 사용한다.
private:
UFUNCTION(NetMulticast, Reliable)
void MulticastLevelUpParticles() const;
void AAuraCharacter::LevelUp_Implementation()
{
if (IsValid(LevelUpNiagaraComponent))
{
LevelUpNiagaraComponent->Activate(true);
}
}
void AAuraCharacter::MulticastLevelUpParticles_Implementation() const
{
}
(3) Aura 캐릭터에 나이아가라 시스템 추가
(4) 파티클 방향이 항상 카메라를 향해 보이게 하기
파티클이 캐릭터의 트랜스폼을 따라가지 않고 항상 카메라에 정렬되어 보이게 하려고 한다.
(4-1) 카메라 설정 수정
먼저 카메라의 설정을 변경하여 절대 좌표를 사용하게 한다.
SpringArm = CreateDefaultSubobject<USpringArmComponent>("SpringArm");
SpringArm->SetUsingAbsoluteRotation(true);
SpringArm->bDoCollisionTest = false;
SpringArm->SetupAttachment(RootComponent);
Camera = CreateDefaultSubobject<UCameraComponent>("Camera");
Camera->SetupAttachment(SpringArm, USpringArmComponent::SocketName);
Camera->bUsePawnControlRotation = false;
(4-2) 카메라 좌표를 가져와 파티클 정렬
void AAuraCharacter::LevelUp_Implementation()
{
MulticastLevelUpParticles();
}
void AAuraCharacter::MulticastLevelUpParticles_Implementation() const
{
if (IsValid(LevelUpNiagaraComponent))
{
// 나이아가라 시스템을 카메라 방향으로 정렬
const FVector CameraLocation = Camera->GetComponentLocation();
const FVector NiagaraSystemLocation = LevelUpNiagaraComponent->GetComponentLocation();
const FRotator ToCameraRotation = (CameraLocation - NiagaraSystemLocation).Rotation();
LevelUpNiagaraComponent->SetWorldRotation(ToCameraRotation);
LevelUpNiagaraComponent->Activate(true);
}
}
'UE 5 스터디 > Gameplay Ability System(GAS)' 카테고리의 다른 글
21-1. 속성 포인트 / 스펠 포인트 - (1) 멤버 변수화, 델리게이트 선언, 람다 함수 바인드 (0) | 2025.01.20 |
---|---|
20-13. 레벨업 - (5) 레벨업 시 레벨업 메시지 표시 (0) | 2025.01.20 |
20-11. 레벨업 - (3) 위젯으로 레벨 넘기기 (0) | 2025.01.20 |
20-10. 레벨업 - (2) 레벨업 및 속성 & 스펠 포인트 획득 (0) | 2025.01.16 |
20-9. 레벨업 - (1) 캐릭터 레벨 Getter 코드 리펙토링 (0) | 2025.01.16 |