블루프린트 제어
블루프린트에서 Niagara Component를 생성·활성화하고 사용자 변수·이벤트·Parameter Collection으로 효과를 제어합니다.
나이아가라 파티클 시스템은 블루프린트(Blueprint)와 연동해 게임 로직, 플레이어 입력, 환경 변화에 따라 파티클 효과를 제어할 수 있습니다.
스폰뿐 아니라 속성 변경, 이벤트 트리거, 시스템 활성화/비활성화에도 사용할 수 있습니다.
이 절에서는 나이아가라 시스템을 블루프린트에서 생성하고, 기본적인 속성을 제어하며, 이벤트를 활용하는 방법에 대해 알아보겠습니다.
게임 이벤트를 받은 Blueprint가 User Parameter와 Activate·Deactivate를 나눠 호출하면 제어 흐름이 선명해진다.
- 1반복 재생
기존 Component를 참조하고 User 값을 먼저 쓴 뒤 Activate한다.
- 2일회성 효과
Spawn System으로 만들고 Auto Destroy 또는 Pooling 정책을 함께 둔다.
나이아가라 시스템 컴포넌트 추가
블루프린트에서 나이아가라 시스템을 제어하는 가장 기본적인 방법은 나이아가라 시스템을 블루프린트 액터에 컴포넌트(Component)로 추가하는 것입니다.
- 새로운
Actor블루프린트를 생성합니다. (예:BP_NiagaraController) - 또는 기존 캐릭터, 무기 등의 블루프린트를 엽니다.
Niagara Particle System 컴포넌트 추가- 블루프린트 에디터의
Components패널에서Add버튼을 클릭합니다. - 검색창에
Niagara를 입력하고Niagara Particle System컴포넌트를 선택하여 추가합니다.
- 새로 추가된
Niagara Particle System컴포넌트를 선택합니다. Details패널에서Niagara섹션의Niagara System속성을 찾습니다.- 사용할 나이아가라 시스템 에셋(예:
NS_BasicSpawn또는 이전에 만든 다른 시스템)을 드롭다운 메뉴에서 선택하거나, 콘텐츠 브라우저에서 드래그하여 할당합니다.
Niagara Particle System컴포넌트를 드래그하여 다른 컴포넌트(예:Static Mesh Component또는Skeletal Mesh Component)의 자식으로 만들면 해당 컴포넌트에 부착됩니다.Details패널에서Transform섹션의Location,Rotation,Scale을 조절하여 파티클 시스템의 상대적인 위치를 조정할 수 있습니다.- 스켈레탈 메시에 부착할 경우,
Parent Socket속성을 통해 특정 본이나 소켓에 부착할 수 있습니다.
나이아가라 시스템 제어
가장 흔하게 사용되는 제어 방식은 파티클 시스템을 켜고 끄는 것입니다.
Activate노드: 파티클 시스템을 활성화합니다. 시스템이 재생을 시작합니다.Deactivate노드: 파티클 시스템을 비활성화하고, 현재 활성화된 모든 파티클을 소멸시킵니다.Set Auto Activate노드: 블루프린트가 스폰될 때 시스템이 자동으로 활성화될지 여부를 설정합니다.Is Active노드: 현재 시스템이 활성화 상태인지Bool값을 반환합니다.
한 Component의 상태인지, 일회성 인스턴스인지, 여러 시스템의 공통값인지부터 구분한다.
- 기존 Component
Set User.* → Activate / Deactivate 지속 오라·엔진 불꽃처럼 한 Actor가 반복 재생한다.
- 새 일회성 인스턴스
Spawn at Location / Spawn Attached 피격·폭발처럼 생성 위치와 종료 정책이 한 번 정해진다.
- 여러 시스템의 공통 상태
Parameter Collection → Shared Read 바람·시간대·전역 강도처럼 월드 범위에서 함께 읽는다.
| 선택 질문 | 기존 Component | 일회성 Spawn | Parameter Collection |
|---|---|---|---|
| 범위 | 한 인스턴스 | 새 인스턴스 하나 | 여러 시스템 |
| 수명 | 지속·반복 | 짧고 일회성 | 월드 상태 |
| 갱신 | 값 변경 시 Set | 생성 전 초기화 | 공통값 변경 시 |
| 종료 | Deactivate 상태 확인 | Auto Destroy·Pool | 소유 월드가 관리 |
직접 해보기: 버튼을 눌러 파티클 켜고 끄기
새로운 Actor 블루프린트 (BP_ToggleNiagara)를 만들고 나이아가라 시스템 컴포넌트를 추가한 뒤, 키 입력을 받아 시스템을 켜고 끄는 로직을 구현해 보겠습니다.
새로운 Actor 블루프린트 BP_ToggleNiagara를 생성합니다.
Components 패널에서 Niagara Particle System 컴포넌트를 추가하고, Niagara System 속성에 NS_BasicSpawn 또는 원하는 나이아가라 시스템을 할당합니다.
Event Graph 탭으로 이동합니다.
Event Begin Play 노드에서 Niagara Particle System 컴포넌트의 레퍼런스를 가져와 Deactivate 노드를 연결하여 게임 시작 시 파티클 시스템을 비활성화합니다.
빈 공간에 우클릭하고 Keyboard Events에서 원하는 키(예: E 키)를 검색하여 E 키 이벤트 노드를 추가합니다.
E 키 이벤트 노드의 Pressed 핀에서 Niagara Particle System 컴포넌트의 레퍼런스를 가져와 Is Active 노드를 연결합니다.
Is Active 노드의 Return Value에서 Branch 노드를 연결합니다.
Branch 노드의 True 핀에서는 Niagara Particle System 컴포넌트 레퍼런스에서 Deactivate 노드를 연결합니다.
Branch 노드의 False 핀에서는 Niagara Particle System 컴포넌트 레퍼런스에서 Activate 노드를 연결합니다.
블루프린트를 컴파일하고 저장한 후, 레벨에 BP_ToggleNiagara 액터를 배치합니다.
게임을 플레이하여 E 키를 누르면 파티클 시스템이 켜지고, 다시 누르면 꺼지는 것을 확인할 수 있습니다.
나이아가라 시스템의 사용자 변수 제어
위치·부착·초기값·활성화·종료 정책을 같은 이벤트 흐름에 묶어야 엉뚱한 위치와 컴포넌트 누적을 막을 수 있다.
- 1Spawn / Attach
Location·Socket·Local/World Space를 고정한다.
- 2Set User.*
름과 타입이 같은 초기값을 활성화 전에 기록한다.
- 3Activate
Component Lifetime과 Auto Activate 정책을 확인한다.
- 4Update
값이 바뀔 때만 Parameter를 갱신한다.
- 5Deactivate
잔존 파티클·Inactive Response를 확인한다.
- 6Cleanup
Auto Destroy 또는 Pool 반환으로 누적을 막는다.
| 문제 신호 | 끊긴 구간 | 먼저 확인할 것 |
|---|---|---|
| 엉뚱한 위치에서 생성 | Spawn / Attach | Transform·Socket·Space |
| 값이 기본값으로 남음 | Set User.* | User.* 이름·타입·호출 시점 |
| 켜지지 않거나 계속 남음 | Activate / Deactivate | Auto Activate·Inactive Response |
| Component가 누적됨 | Cleanup | Auto Destroy·Pooling·참조 해제 |
나이아가라 시스템 내부에 사용자 변수(User Variables)를 노출시켜 블루프린트에서 이를 직접 제어할 수 있습니다.
이는 파티클의 스폰율, 색상, 크기, 힘의 강도 등 거의 모든 속성을 동적으로 변경할 때 사용됩니다.
나이아가라 시스템에서 사용자 변수 노출
나이아가라 시스템 에디터를 엽니다.
Parameters 패널에서 User 섹션을 찾습니다.
+ 버튼을 클릭하고 Add User Parameter에서 원하는 타입(예: Float, Vector, Color)을 선택하여 새 사용자 변수를 만듭니다. (예: User.SpawnRateMultiplier, User.ImpactColor)
새로 생성된 사용자 변수를 드래그하여 이미터의 해당 속성 입력 핀에 연결합니다.
- 예시:
Spawn Rate모듈의Spawn Rate입력에User.SpawnRateMultiplier를 연결합니다.
연결된 사용자 변수의 기본값을 설정합니다.
블루프린트에서 사용자 변수 설정
블루프린트 에디터의 Event Graph로 돌아갑니다.
Niagara Particle System 컴포넌트의 레퍼런스를 가져옵니다.
Set Niagara Variable 노드를 검색하여 추가합니다. (예: Set Niagara Variable Float, Set Niagara Variable Vector)
Variable Name 입력에 나이아가라 시스템에서 노출시킨 사용자 변수의 정확한 이름을 입력합니다. (예: User.SpawnRateMultiplier)
In Value 입력에 원하는 값을 연결합니다.
직접 해보기: 스폰율을 동적으로 조절하기
위에서 만든 BP_ToggleNiagara 블루프린트에 스폰율 조절 기능을 추가해 보겠습니다.
NS_BasicSpawn 나이아가라 시스템을 엽니다.
Parameters 패널의 User 섹션에서 + 버튼을 클릭하고 Add User Parameter > Float를 선택하여 User.SpawnRateMultiplier라는 이름의 사용자 변수를 만듭니다.
기본값은 1.0으로 설정합니다.
Emitter Update 섹션의 Spawn Rate 모듈을 선택합니다.
Spawn Rate 입력 옆의 드롭다운을 클릭하고 Float from Niagara Parameter를 선택하여 User.SpawnRateMultiplier를 연결합니다.
나이아가라 시스템을 저장합니다.
BP_ToggleNiagara 블루프린트 에디터로 돌아갑니다.
E 키 이벤트의 Activate 노드 뒤에 Delay 노드를 연결하고 Duration을 0.5초 정도로 설정합니다.
Delay 노드 뒤에 Niagara Particle System 컴포넌트 레퍼런스에서 Set Niagara Variable Float 노드를 추가합니다.
Variable Name에 User.SpawnRateMultiplier를 정확히 입력합니다.
In Value에 500.0과 같은 높은 값을 연결합니다.
Set Niagara Variable Float 노드 뒤에 또 다른 Delay 노드를 연결하고 Duration을 1.0초 정도로 설정합니다.
이 Delay 노드 뒤에 다시 Set Niagara Variable Float 노드를 추가하고 Variable Name은 동일하게 User.SpawnRateMultiplier, In Value는 100.0과 같은 기본 값으로 설정합니다.
컴파일하고 저장한 뒤 게임을 플레이합니다.
E 키를 누르면 파티클이 처음에는 폭발하듯이 많이 나왔다가, 잠시 후 정상적인 스폰율로 돌아오는 것을 확인할 수 있습니다.
나이아가라 이벤트 활용
블루프린트 입력이 모든 경우에 같은 경로로 들어가지는 않는다. 단일 컴포넌트 값, 전역 파라미터, 이벤트성 트리거를 구분한다.
- User Parameter가 기본 후보
스폰율 조정 User Parameter가 기본 후보 특정 Niagara Component의 SpawnRate나 Color를 블루프린트에서 직접 바꾼다. Set Niagara Variable
- Parameter Collection 후보
날씨 전역값 Parameter Collection 후보 비, 바람, 시간대처럼 여러 시스템이 공유하는 값을 한곳에서 바꾼다. global value
- Event 또는 Blueprint 호출 후보
충돌 순간 Event 또는 Blueprint 호출 후보 한 번 발생한 충돌, 폭발, 발사 같은 순간 반응을 트리거한다. one shot
- 파라미터로 남기는 편이 안전
상태 유지 파라미터로 남기는 편이 안전 계속 유지되어야 하는 색상, 강도, 크기는 이벤트보다 변수로 관리한다. stateful
나이아가라 이벤트는 블루프린트와 나이아가라 시스템 간에 데이터를 주고받는 강력한 메커니즘입니다.
블루프린트에서 특정 이벤트(예: 플레이어 피격)를 발생시키고, 나이아가라 시스템이 이 이벤트를 감지하여 파티클을 스폰하거나 속성을 변경하게 할 수 있습니다.
블루프린트에서 이벤트 발송
블루프린트에서 나이아가라 이벤트를 발생시키려면 Spawn System at Location 또는 Spawn System Attached 노드를 사용하며, 이때 Spawn System 노드의 Parameters 핀에 데이터를 전달할 수 있습니다.
Spawn System at Location노드를 사용하여 파티클 시스템을 스폰합니다.Location핀에 원하는 월드 위치를 연결합니다.Niagara System핀에 스폰할 나이아가라 시스템 에셋을 할당합니다.Parameters핀에서Make Niagara System Spawn Info구조체를 만들고, 여기에 특정 이름의 변수(예:MyImpactPower)를 추가하여 값을 전달합니다.
나이아가라 시스템에서 이벤트 수신
나이아가라 시스템은 블루프린트에서 보낸 이벤트를 Event Handler 모듈을 통해 수신합니다.
나이아가라 시스템 에디터에서 이미터의 Event Handlers 섹션으로 이동합니다.
+ 버튼을 클릭하고 Add Event Handler를 선택합니다.
Event Handler 모듈을 선택하고 Details 패널에서 Source 섹션의 Source 속성을 Blueprint로 설정합니다.
Source Event Name에 블루프린트에서 보낸 이벤트 변수의 정확한 이름을 입력합니다. (예: MyImpactPower)
Actions 섹션에서 Add Action을 클릭하고 Spawn Particles를 선택합니다. (이벤트가 발생할 때 파티클을 스폰)
Spawn Particles 액션의 Spawn Count나 다른 속성을 Event Handler의 출력 핀(예: Payload.Float.MyImpactPower)과 연동하여 블루프린트에서 전달된 값에 따라 파티클을 다르게 스폰하게 할 수 있습니다.
나이아가라 파라미터 컬렉션 (Niagara Parameter Collection)
여러 나이아가라 시스템에 공통으로 적용해야 하는 값(예: 전역 바람 세기, 전투 위험도, 월드 온도)은 각 시스템의 User Parameter를 개별 업데이트하기보다 Niagara Parameter Collection(NPC)으로 중앙 관리하는 편이 효율적입니다.
런타임 제어 흐름
NPC_GlobalFX컬렉션에WindStrength,DangerLevel같은 파라미터를 정의합니다.- 나이아가라 시스템/이미터에서 해당 파라미터를 참조해 스폰율, 속도, 색상 등에 반영합니다.
- 블루프린트(예:
BP_GameState)에서 게임 상태 변화 시 컬렉션 값을 갱신합니다. - 컬렉션 값을 참조하는 모든 시스템이 자동으로 업데이트됩니다.
BP_GameState (런타임 값 계산)
-> Set Niagara Parameter Collection Float (NPC_GlobalFX.WindStrength)
-> Niagara Systems read NPC value
-> Spawn Rate / Velocity / Color 동시 반영- 글로벌 변수만 컬렉션에 두고, 개별 이펙트 차이는 User Parameter로 분리합니다.
- 컬렉션 파라미터 이름 규칙(
Global.*)을 정해 프로젝트 전반에서 일관성 있게 관리합니다. - 틱마다 무조건 갱신하지 말고 값이 변한 프레임에만 업데이트해 비용을 줄입니다.
블루프린트 제어는 값을 어디에 저장하고 언제 갱신할지 정하는 문제이므로, 컴포넌트 상태, 개별 사용자 변수, 순간 이벤트 페이로드, 전역 컬렉션을 레이어별로 분리하면 그래프가 커져도 추적하기 쉽습니다.
나이아가라를 블루프린트에서 다룰 때는 재생 상태, 개별 입력값, 순간 이벤트, 전역 환경값을 서로 다른 레이어에 두어야 그래프가 길어져도 추적이 쉽습니다.
- 제어 레이어
layers Activate 와 Deactivate 는 재생 여부만 담당하게 두면 토글 로직이 단순해집니다. 스폰율, 색상, 반경처럼 한 시스템의 표현만 바꾸는 값을 전달합니다. 피격 위치와 충격량처럼 순간적으로 소비되는 데이터를 실어 보냅니다. 바람, 위험도, 환경 온도처럼 여러 시스템이 공유하는 값은 NPC에 둡니다.
- State
Activate 와 Deactivate 는 재생 여부만 담당하게 두면 토글 로직이 단순해집니다.
- User Parameter
스폰율, 색상, 반경처럼 한 시스템의 표현만 바꾸는 값을 전달합니다.
- Event Payload
피격 위치와 충격량처럼 순간적으로 소비되는 데이터를 실어 보냅니다.
- Collection
바람, 위험도, 환경 온도처럼 여러 시스템이 공유하는 값은 NPC에 둡니다.
- 갱신 타이밍
when 상황 상태 User.* 이벤트 NPC Begin Play Auto Activate 설정 초기 색과 크기 사용하지 않음 월드 기본값 Input 토글과 재생 강도 보정 필요 시 burst 드물게 사용 Hit / Notify 짧게 활성화 접촉 강도 위치와 normal 전달 공통 상태 읽기 State Change 필요 효과 전환 캐릭터별 값 알림성 데이터 변경 프레임만 갱신
고급 설계: Emitter와 System의 책임 분리
복잡한 VFX를 안정적으로 확장하려면 어디까지를 이미터가, 어디부터를 시스템이 담당하는지를 먼저 정해야 합니다.
- Emitter 책임: 단일 파티클 동작 규칙(스폰/업데이트/렌더러/로컬 파라미터)을 캡슐화합니다.
- System 책임: 여러 이미터를 조합하고 타이밍, 이벤트 라우팅, 외부 입력(블루프린트/NPC)을 통합합니다.
- 운영 원칙: 재사용 가능한 로직은 Emitter로, 씬/연출 의존 조합은 System으로 둡니다.
이 원칙을 지키면 같은 불꽃 이미터를 여러 무기 시스템에서 재사용하거나, 시네마틱 전용 연출만 시스템 레이어에서 교체하는 작업이 훨씬 쉬워집니다.
아래 보드는 Emitter, System, Blueprint, Collection 사이의 책임 경계를 다시 정리한 것입니다.
블루프린트 제어가 커질수록 효과 로직을 어디에 둘지 먼저 정해야 합니다. 이 경계를 잡아두면 같은 이미터를 여러 시스템에서 재사용하기 쉽습니다.
- Emitter파티클 규칙
Emitter Spawn, Initialize, Update, Renderer처럼 한 종류의 파티클이 매 프레임 어떻게 움직이는지를 캡슐화합니다.
- System연출 조합
System 여러 이미터의 타이밍, 발동 순서, User Parameter 연결을 묶어 하나의 FX 에셋으로 관리합니다.
- Blueprint게임 상태
Blueprint 입력, 피격, 스킬 발동, 위치 계산처럼 게임 로직에서 나온 값을 시스템에 전달합니다.
- Collection전역 환경
Collection 바람, 위험도, 시간대처럼 여러 시스템이 공유하는 값은 Niagara Parameter Collection에 둡니다.
- User.*개별 시스템 입력
User.* 예시 User.Power , User.Color 소유 System 단위로 값이 다를 때
- Event순간 페이로드
Event 예시 Hit Location, Impact Strength 소유 발생 프레임에만 소비할 때
- NPC공통 파라미터
NPC 예시 Wind Strength, Danger Level 소유 여러 효과가 같은 값을 읽을 때
블루프린트 제어는 컴포넌트 생성, 재생 제어, 변수 전달, 이벤트 전달을 분리하면 문제 위치가 빨리 보입니다.
블루프린트에서는 Niagara Component를 만들고 Activate, Set Variable, Event 전달을 상황별로 나눠 써야 제어가 깔끔합니다.
- 1생성/부착
Create Spawn System Attached 또는 Niagara Component로 위치와 소켓 기준을 정합니다.
- 2재생 제어
Play Activate, Deactivate, Reset System으로 켜고 끄는 시점을 분리합니다.
- 3변수 전달
User User.SpawnRate 같은 노출 변수를 Set Niagara Variable로 갱신합니다.
- 4이벤트
Event 게임 이벤트를 나이아가라 이벤트나 파라미터 변경으로 변환합니다.
- 5변수 이름
User 네임스페이스와 블루프린트 변수명이 정확히 일치하는지 봅니다.
- 6타이밍
Activate 전에 필요한 기본값이 먼저 들어가는지 확인합니다.
- 7책임
Emitter는 표현, Blueprint는 게임 조건 판단을 맡도록 나눕니다.
블루프린트 연동을 사용하면 나이아가라 시스템의 활성화, 사용자 변수, 이벤트 통신을 게임플레이 상태와 연결할 수 있습니다.
플레이어 행동이나 환경 변화에 반응해야 하는 효과라면 호출 위치와 변수 갱신 주기를 함께 정해야 합니다.
블루프린트 제어는 데이터 입력, 이미터 책임, 렌더 비용, 재현 기준으로 점검합니다.