블루프린트 제어
블루프린트에서 Niagara Component를 생성·활성화하고 사용자 변수·이벤트·Parameter Collection으로 효과를 제어합니다.
Blueprint는 게임 이벤트와 상태를 판단하고, Niagara Component의 재생 및 User Parameter를 제어합니다. 기존 컴포넌트를 반복 재생하는 경우와 새 일회성 효과를 생성하는 경우를 구분합니다.
컴포넌트 추가와 재생 제어
Actor Blueprint BP_NiagaraController를 만들거나 캐릭터·무기 Blueprint를 엽니다. Components에서 Niagara 컴포넌트를 추가하고 Niagara System 에셋을 할당합니다.
필요하면 다른 Scene Component의 자식으로 옮기고 상대 Transform을 맞춥니다. Skeletal Mesh 부착은 Parent Socket에 실제 본/소켓을 지정합니다. 생성된 입자까지 부모를 따를지는 Emitter의 Local Space 설정도 확인합니다.
직접 재생을 제어할 컴포넌트는 Details에서 Auto Activate를 끕니다. 컴포넌트가 등록될 때의 자동 활성화 정책이며, 런타임 Set Auto Activate를 현재 재생을 끄는 명령처럼 사용하지 않습니다.
- Activate: 컴포넌트를 활성화합니다. 이미 활성인 시스템의 재시작은 Reset 인자와 재초기화 정책을 확인합니다.
- Deactivate: 비활성화를 요청합니다. Inactive Response와 수명 설정에 따라 기존 입자가 자연스럽게 마무리될 수 있으며, 모두 즉시 삭제된다는 뜻은 아닙니다.
- Is Active: 컴포넌트의 활성 상태를 읽습니다. 살아 있는 입자 수나 화면 가시성과 동일하지 않습니다.
직접 해보기: E 키로 켜고 끄기
BP_ToggleNiagara Actor에 Niagara 컴포넌트를 추가하고 NS_BasicSpawn을 할당합니다. Auto Activate는 끕니다. 재사용할 컴포넌트는 완료 후 자동 파괴되지 않게 합니다.
단일 플레이어 실습에서는 Actor의 Auto Receive Input을 Player 0으로 지정하고 레벨에 배치합니다. 실제 게임에서는 이미 입력을 받는 PlayerController/Character의 입력 액션에서 제어하는 방법을 사용합니다.
Event Graph에 E 키 이벤트와 Branch를 둡니다. E의 Pressed 실행 핀은 Branch의 실행 입력에 연결하고, Niagara 컴포넌트의 Is Active 반환 Bool은 Branch의 Condition에 연결합니다. Pure 조회 노드에 실행 핀을 연결하지 않습니다.
Branch True는 Deactivate, False는 Activate로 연결합니다. Target은 같은 Niagara 컴포넌트입니다. 시스템을 처음부터 재생하려는 실습이라면 Activate의 Reset을 켭니다.
컴파일·저장 후 PIE 입력 포커스를 확보하고 E 키를 눌러 비교합니다. 껐을 때 남는 입자는 시스템의 Inactive Response와 Lifetime에 따른 것인지 확인합니다.
User Parameter로 개별 효과 조절
Niagara System의 User Parameters에 Float User.SpawnRateMultiplier를 만들고 기본값을 1로 둡니다.
Emitter Update의 Spawn Rate 입력을 기본 생성률 100 × User.SpawnRateMultiplier로 구성합니다. 배율 1은 100개/초, 5는 500개/초입니다. 배율을 생성률에 직접 연결하면 1개/초가 되므로 의미를 구분합니다.
Blueprint에서 해당 Niagara Component를 Target으로 Set Niagara Variable (Float)를 호출하고 이름을 User.SpawnRateMultiplier로 맞춥니다. 색상·벡터·Position도 노출한 타입과 setter를 맞춰야 합니다.
변수 이름만 선언해도 자동 적용되지는 않습니다. 실제 모듈 입력이 읽어야 하며 Spawn에서만 읽는 값은 이미 살아 있는 입자에 소급 적용되지 않습니다.
직접 해보기: 잠깐 높아지는 생성률
앞의 토글에 단순 Delay 체인을 무조건 연결하면 끄거나 재시작한 뒤 이전 Delay가 값을 덮어쓸 수 있습니다. 타이머 핸들을 보관하고 재시작/종료 시 취소하는 흐름으로 구성합니다.
활성화 분기에서 이전 타이머를 취소하고 배율을 1로 초기화한 뒤 Activate합니다. 0.5초 후 실행할 일회성 타이머를 시작합니다.
타이머 콜백은 컴포넌트가 유효하고 현재 활성인지 확인한 후 배율을 5로 설정합니다. 이어서 1초 후 배율을 1로 돌리는 일회성 타이머를 시작하고 그 핸들도 저장합니다.
비활성화 분기와 EndPlay에서는 두 타이머를 취소하고 필요한 기본값을 복구합니다. 컴포넌트 참조를 검증한 뒤 Deactivate합니다.
예상 생성률은 활성화 직후 100개/초, 0.5초 뒤 500개/초, 다시 1초 뒤 100개/초입니다. 생성 직후의 한 번짜리 폭발 Burst와는 다른 동작입니다.
게임 이벤트와 Niagara 내부 이벤트
피격 이벤트는 Blueprint에서 일회성 시스템을 Spawn하거나 기존 컴포넌트 값을 바꾸는 계기가 됩니다. 일반 Spawn System 노드에 임의의 Parameters 배열이나 Make Niagara System Spawn Info를 연결하는 방식으로 설명하지 않습니다.
초기값이 필요한 경우 Spawn System at Location의 Auto Activate를 끄고, 반환 Niagara Component가 유효하면 User 값을 설정한 뒤 Activate합니다. 위치/부착 입력과 수명 종료·Auto Destroy 또는 풀링 정책도 함께 정합니다. Spawn 노드 참조
Niagara의 기존 Event Handler는 주로 같은 시스템의 소스 이미터가 만든 Location/Collision/Death 이벤트를 받습니다. Source를 Blueprint로 지정해서 임의의 게임 이벤트를 받는 공통 인터페이스가 아닙니다. 다수 이벤트를 모아서 전달할 필요가 있다면 지원 버전의 Niagara Data Channels를 별도로 검토합니다.
Niagara Parameter Collection
바람·시간대처럼 여러 효과가 공유할 값은 Niagara Parameter Collection(NPC)에 두고 개별 효과의 차이는 User Parameter로 둡니다.
NPC_GlobalFX에 WindStrength 등의 Float를 정의합니다.- 해당 월드에서
Get Niagara Parameter Collection으로 컬렉션 인스턴스를 얻습니다. - 그 인스턴스를 Target으로
Set Float Parameter를 호출합니다. 컬렉션이 실제로 사용하는 전체 매개변수 이름을 확인합니다. - 각 시스템의 모듈이 컬렉션 값을 읽도록 연결합니다. Spawn에서 읽으면 새 입자에, Update에서 읽으면 갱신 시점에 반영됩니다.
BP_GameState의 상태 변화
-> Get Niagara Parameter Collection (NPC_GlobalFX, 현재 월드)
-> 반환 인스턴스의 Set Float Parameter (WindStrength의 실제 이름)
-> Niagara의 연결된 모듈 입력이 해당 단계에서 읽음공유 컬렉션이라고 네트워크 복제가 자동으로 이루어지는 것은 아닙니다. 서버 권위 값은 게임 로직이 필요한 클라이언트에 전달하고 각 월드의 시각 상태를 갱신합니다.
책임 분리
Emitter는 한 종류의 생성·움직임·렌더러 규칙을, System은 여러 이미터와 외부 입력의 조합을 맡습니다. Blueprint는 게임 조건과 컴포넌트 수명을, Collection은 공통 입력을 담당합니다. 이 경계를 유지하면 같은 불꽃 이미터를 여러 무기 시스템에서 재사용하기 쉽습니다.