파티클 생성 및 기본 속성 설정
Spawn Rate와 Burst로 생성 시점과 수량을 정하고 초기 위치·속도·수명·색상·크기를 설정해 기본 효과를 만듭니다.
이미터는 파티클 생성 규칙을 담는 단위입니다.
이번 절에서는 파티클이 언제 생성되고, 생성 직후 어떤 위치·속도·수명 값을 갖는지 확인합니다.
Spawn 단계에서 태어난 파티클은 초기 속성을 받은 뒤 Update가 읽고 Renderer가 그린다. 생성량과 수명을 함께 보아야 누적 비용도 설명된다.
- Rate / Burst
지속 생성량 또는 순간 발생량을 정한다.
- Initialize
Lifetime·Color·Size·초기 위치를 한 번 채운다.
- Velocity / Seed
초기 방향과 반복 가능한 무작위 상태를 정한다.
- Particle Update
매 프레임 힘·색·크기 변화를 누적한다.
- Renderer
최종 속성을 Sprite·Mesh·Ribbon으로 화면에 그린다.
- Rate
연기·비처럼 계속 이어지는 효과의 평균 밀도.
- Burst
폭발·충돌처럼 한 프레임에 몰리는 생성 피크.
- Seed
프리뷰와 게임에서 같은 랜덤 결과를 재현하는 기준.
파티클 생성: 스폰(Spawn) 모듈
Spawn Rate와 Spawn Burst는 입자가 태어나는 방식을 정하고, Initialize 값은 이후 Update와 Renderer가 읽는 출발점이 된다.
| 모듈 | 역할 | 잘 맞는 효과 | 문제 신호 |
|---|---|---|---|
| Spawn Rate | 초당 일정 개수 생성 | 연기, 비, 눈처럼 지속되는 효과 | 밀도가 계속 과하거나 부족함 |
| Spawn Burst | 특정 순간 대량 생성 | 폭발, 충격, 파편 방출 | 한 번에 튀는 양이 과함 |
| Initialize Particle | Lifetime, Color, Size, Velocity 초기값 설정 | 모든 파티클의 시작 상태 | 생성 직후부터 모양이 어긋남 |
| Spawn 조건 | Emitter State와 활성 조건 확인 | 타이밍이 중요한 효과 | 원하는 시점에 나오지 않음 |
파티클은 이미터 내의 스폰(Spawn) 섹션에 있는 모듈들에 의해 생성됩니다.
이 섹션의 모듈들은 이미터의 수명 주기 동안 파티클을 뿌려주는 역할을 합니다.
주로 사용되는 두 가지 스폰 방식이 있습니다.
Spawn Rate
Spawn Rate 모듈은 파티클을 지속적으로, 초당 지정된 개수만큼 생성할 때 사용합니다.
마치 수도꼭지를 틀면 물이 계속해서 흘러나오는 것과 비슷합니다.
- 사용 예시: 연기, 불꽃, 비, 눈처럼 끊임없이 이어지는 효과
- 설정:
Spawn Rate모듈을 추가한 후,Spawn Rate속성의 값을 변경하여 초당 생성될 파티클의 수를 조절합니다. 값이 높을수록 더 많은 파티클이 빠르게 생성됩니다.
Spawn Burst Instantaneous
Spawn Burst Instantaneous 모듈은 파티클을 특정 시점에 한 번에, 지정된 개수만큼 생성할 때 사용합니다.
폭죽이 터지면서 한 번에 불꽃이 펑 하고 터져 나오는 것과 같습니다.
- 사용 예시: 폭발, 충격파, 짧은 섬광처럼 순간적으로 많은 파티클이 필요한 효과
- 설정:
Spawn Burst Instantaneous모듈을 추가한 후,Number속성의 값을 변경하여 한 번에 생성될 파티클의 총 개수를 조절합니다.
대부분의 나이아가라 효과는 이 두 가지 스폰 방식 중 하나를 사용하거나, 혹은 두 가지를 조합하여 사용하기도 합니다.
예를 들어, 지속적으로 타오르는 불꽃(Spawn Rate)과 함께 가끔 크게 터져 오르는 불씨(Spawn Burst)를 표현할 수 있습니다.
파티클의 기본 속성 설정
파티클이 생성되는 시점에는 마치 갓 태어난 아기처럼 아무런 특별한 속성이 없습니다.
파티클이 어떤 형태와 성질을 가질지 최초로 정의해주는 것이 바로 Initialize Particle 모듈입니다.
이 모듈은 스폰 섹션에 위치하며, 파티클이 생성될 때 가장 먼저 실행되어 파티클의 탄생 조건을 설정합니다.
Initialize Particle 모듈에서 설정할 수 있는 주요 기본 속성들은 다음과 같습니다.
-
Lifetime (수명): 파티클이 생성된 후 얼마나 오랫동안 존재할지를 초 단위로 정의합니다. 이 값은 단일 값으로 설정할 수도 있고, 최소/최대 값을 지정하여 무작위 범위 내에서 수명이 결정되도록 할 수도 있습니다.- Tip: 파티클의 수명을 길게 설정하면 효과가 더 오래 지속되고, 짧게 설정하면 빠르게 사라집니다.
-
Color (색상): 파티클이 생성될 때 가질 초기 색상을 정의합니다. RGBA(Red, Green, Blue, Alpha) 값을 조절하여 원하는 색상을 선택할 수 있습니다. Alpha 값은 파티클의 불투명도를 나타냅니다.- Tip: 일반적으로 파티클의 색상은
Color모듈이나Scale Color모듈을 통해 수명에 따라 변화시키는 경우가 많습니다.
- Tip: 일반적으로 파티클의 색상은
-
Sprite Size (스프라이트 크기): 파티클이 2D 스프라이트 형태로 렌더링될 때의 초기 크기를 정의합니다. X, Y 값을 개별적으로 설정하여 타원형 파티클을 만들 수도 있습니다.- Tip: 스프라이트 크기 역시
Scale Sprite Size모듈을 통해 수명에 따라 변화시키는 것이 일반적입니다.
- Tip: 스프라이트 크기 역시
-
Sprite Rotation (스프라이트 회전): 파티클 스프라이트의 초기 회전 각도를 설정합니다. -
Mesh Scale (메시 스케일): 파티클이 3D 메시 형태로 렌더링될 때의 초기 크기를 정의합니다. -
Radius (반경): 파티클의 물리적 충돌 감지에 사용되는 반경을 정의합니다.
이 외에도 Initialize Particle 모듈에서는 파티클의 초기 위치, 초기 속도 등 다양한 속성을 설정할 수 있습니다.
하지만 이 모듈의 주요 목적은 최초의 상태를 정의하는 것이고, 이후의 동적인 변화는 Particle Update 섹션의 모듈들이 담당하게 됩니다.
스폰 방식과 초기값은 따로 외우기보다 제작 순서로 묶어 보면 쉽습니다.
먼저 생성량을 정하고, 그다음 생성 직후의 수명과 모양을 채운 뒤, 마지막으로 렌더러가 실제 화면에 그릴 형태를 정합니다.
빈 System에 Emitter를 넣고 생성 방식과 초기 상태를 정한 뒤 Renderer로 출력해야 값이 어디에서 만들어지고 보이는지 추적할 수 있다.
- System
효과 전체를 담을 NS_ 에셋과 외부 입력 경계를 만든다.
- Emitter
파티클 생애와 반복을 담당할 실행 단위를 추가한다.
- Spawn
Rate 또는 Burst로 언제 얼마나 태어날지 정한다.
- Initialize
Lifetime·Color·Size·Velocity의 시작값을 채운다.
- Renderer
Sprite 또는 Mesh로 계산 결과를 화면에 연결한다.
- Rate vs Burst
amount 지속 효과는 초당량, 순간 효과는 이벤트당 발생량부터 맞춘다.
- Lifetime·Color·Size
birth state 입자가 보이지 않으면 출력보다 먼저 0에 가까운 초기값을 확인한다.
초기 설정은 값 하나를 외우는 대신, 목적에 따라 조합을 선택하는 식으로 판단하면 안정적입니다.
Spawn Rate와 Burst는 “언제 몇 개를 만들지”를 정하고, Initialize Particle은 “태어난 순간 어떤 상태인지”를 정합니다. 이 둘을 분리해 보면 효과의 밀도와 모양을 빠르게 튜닝할 수 있습니다.
- 지속 효과
Rate 지속 효과 연기, 비, 불꽃처럼 계속 이어져야 할 때 사용하며 평균 개수는 Rate × Lifetime으로 봅니다.
- 순간 효과
Burst 순간 효과 폭발, 충격파, 섬광처럼 특정 시점에 밀도가 필요할 때 한 번에 생성합니다.
- 복합 효과
Mix 복합 효과 기본 흐름은 Rate로 유지하고 강조 순간만 Burst를 더해 자연스러운 리듬을 만듭니다.
- Lifetime
초기 속성 판단표 속성 먼저 묻는 질문 튜닝 방향 Lifetime 화면에 얼마나 오래 남아야 하나? 길수록 누적 개수와 잔상이 증가 Color / Alpha 태어날 때 밝기와 투명도는? Update의 Scale Color와 역할 분리 Sprite Size 처음부터 크게 보일 필요가 있나? 큰 크기는 오버드로우 비용도 함께 증가 Velocity 생성 직후 어느 방향으로 흘러가나? 랜덤 범위로 반복감을 줄이고 Update 힘과 구분
- 초기 제작 체크 먼저 1초 수명, 작
크기, 낮은 Rate로 보이는지 확인합니다. 무작위 범위는 최소/최대 차이를 작게 시작해 점점 넓힙니다. 렌더러가 읽는 속성 이름과 Initialize 값이 맞는지 봅니다.
직접 해보기: 간단한 생성 효과 만들기
간단한 연습을 통해 파티클 생성과 기본 속성 설정을 직접 경험해 봅시다.
새로운 나이아가라 시스템 생성: New system with empty system 템플릿을 사용하여 NS_BasicSpawn이라는 이름의 빈 나이아가라 시스템을 만듭니다.
이미터 추가: 개요 패널에서 System 아래의 + 버튼을 눌러 Empty Emitter를 추가합니다.
Initialize Particle 모듈 추가: 새로 추가된 Emitter를 선택하고, Spawn 섹션 아래의 + 버튼을 클릭한 후 Initialize Particle을 검색하여 추가합니다.
- 이 모듈을 추가하지 않으면 파티클이 정상적으로 렌더링되지 않거나 오류가 발생할 수 있습니다.
Spawn Rate 모듈 추가: Spawn 섹션 아래의 + 버튼을 다시 클릭하고 Spawn Rate을 검색하여 추가합니다.
Spawn Rate모듈의Spawn Rate값을50정도로 설정합니다. (초당 50개의 파티클 생성)Initialize Particle모듈의Lifetime을1.0으로 설정합니다.Initialize Particle모듈의Sprite Size를50.0으로 설정합니다.Initialize Particle모듈의Color를 원하는 색상으로 변경해 보세요.
Sprite Renderer 모듈 추가: 마지막으로, Render 섹션 아래의 + 버튼을 클릭하고 Sprite Renderer를 추가합니다.
기본 효과가 보이지 않거나 너무 빽빽해질 때는 아래 순서처럼 생성량, 초기값, 렌더러를 분리해서 검증합니다.
NS_BasicSpawn 같은 첫 예제는 화려함보다 원인 분리가 중요합니다. 보이는 최소 상태를 만든 뒤 Spawn Rate, Initialize Particle, Sprite Renderer를 차례로 확인하면 문제 지점을 빠르게 찾을 수 있습니다.
- Empty Emitter
비어 있는 이미터에서 시작해 시스템 자체가 정상 재생되는지 먼저 확인합니다.
- Spawn Rate
초당 50개처럼 낮은 기준값으로 시작하고 Lifetime과 곱해 평균 개수를 봅니다.
- Initialize Particle
수명, 크기, 색상을 고정값으로 채워 탄생 시점의 상태를 단순하게 만듭니다.
- Sprite Renderer
렌더 섹션에 실제 렌더러를 넣고 머티리얼과 알파가 파티클을 표시하는지 확인합니다.
- 아무것도 안 보임
문제 추적표 증상 먼저 볼 곳 빠른 수정 아무것도 안 보임 Spawn Rate, Lifetime, Renderer 낮은 Rate와 1초 수명으로 다시 시작 너무 빽빽함 Rate와 Lifetime의 곱 수명부터 줄이고 그다음 Rate를 조정 색이 반영 안 됨 Material의 Color/Alpha 입력 Initialize 값과 머티리얼 바인딩 확인 움직임이 없음 초기 Velocity 또는 Add Velocity Z축 값 하나만 넣고 방향 변화 확인
- 기준값 메모 Spawn Rate 50
Lifetime 1.0 으로 평균 50개를 만듭니다. Sprite Size 50 으로 보이는지 확인한 뒤 크기를 줄입니다. 무작위 범위는 기본 상태가 보인 다음에만 추가합니다.
이제 뷰포트에서 흰색(또는 여러분이 설정한 색상)의 사각형 파티클들이 초당 50개씩 생성되어 1초 후에 사라지는 모습을 볼 수 있을 겁니다.
여기에 아직 움직임이나 동적인 변화는 없지만, 파티클이 어떻게 생성되고 어떤 초기 모습을 가지는지를 명확히 보여주는 예시입니다.
파티클의 생성과 기본 속성 설정은 모든 나이아가라 효과의 시작점입니다.
생성 수, 수명, 위치, 속도 같은 초기 값을 먼저 안정적으로 제어해야 이후 단계의 변화를 추적하기 쉽습니다.
생성량, 수명, 크기, 색, 속도를 앞에서 안정화해야 Update와 Renderer의 문제를 분리해 볼 수 있다.
| 순서 | 정하는 값 | 다음 단계가 읽는 것 | 이상이 보이면 |
|---|---|---|---|
| 01 Spawn Rate | 초당 생성 개수 | Viewport의 밀도 | 생성량과 수명부터 함께 낮춘다 |
| 02 Burst | 순간 생성 여부와 개수 | 폭발·충격의 첫 프레임 | 한 번에 튀는 양을 분리한다 |
| 03 Initialize | Lifetime, Size, Color, Velocity | Update의 계산 출발점 | 초기 속성과 색을 기본값으로 되돌려 본다 |
| 04 Update | 시간에 따른 변화 | 최종 위치와 색 | 모듈 순서와 덮어쓰기 위치를 확인한다 |
| 05 Renderer | 화면 표현 | 보이는 모양 | Renderer 활성과 Material 바인딩을 점검한다 |